当前位置: 首页>>代码示例>>Python>>正文


Python Monitor.sync_machines方法代码示例

本文整理汇总了Python中monitor.Monitor.sync_machines方法的典型用法代码示例。如果您正苦于以下问题:Python Monitor.sync_machines方法的具体用法?Python Monitor.sync_machines怎么用?Python Monitor.sync_machines使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在monitor.Monitor的用法示例。


在下文中一共展示了Monitor.sync_machines方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: main

# 需要导入模块: from monitor import Monitor [as 别名]
# 或者: from monitor.Monitor import sync_machines [as 别名]
def main(vm_limit, config_path, skip_setup, local):
    azure_config = None
    if config_path:
        azure_config = AzureConfig(config_path)
       
    provisioner = Provisioner(vm_limit+1, azure_config, skip_setup, local) #+manager
    monitor = None
    statistics = Statistics()
    
    # Socket setup    
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind(('localhost', PORT))
    server_socket.listen(1)
    server_socket.settimeout(TIMEOUT)
    
    # Wait for connections until receive a stop message
    done = False
    no_budget = False
    while(True):
        if done and ((monitor != None and monitor.logwatcher.watching_none()) \
                or (monitor == None and provisioner.logwatcher.watching_none())) \
                or no_budget:
            break
                
        try:
            client_socket, _addr = server_socket.accept()
            msg = receive(client_socket)
            msgs = msg.split(' ')

            # Stop server
            if '--stop' in msgs[0]:
                done = True
            elif len(msgs) == 1:
                if monitor != None:
                    raise Exception("Only one workflow can be monitored at a time")
                
                # Parse workflow to monitor
                monitor = Monitor()
                wf_dir = msgs[0]
                monitor.add_workflow(wf_dir)
                
            else:
                if monitor != None:
                    raise Exception("Only one workflow can be monitored at a time")
                
                provisioner.update_budget_timestamp()
                
                # Parse and schedule a new Workflow instance
                wf_dir = msgs[0]
                pred = msgs[1]
                budget = msgs[2] 
                provisioner.add_workflow(wf_dir, prediction_file=pred, budget=budget)
                try:
                    provisioner.update_schedule()
                except BudgetException:
                    no_budget = True

            client_socket.close()
        except timeout:
            
            if monitor == None and provisioner.workflow.jobs:
                provisioner.update_budget_timestamp()
                
                # Update and sync vms
                provisioner.allocate_new_vms()
                provisioner.deallocate_vms()
                provisioner.sync_machines()
                
                # Update, sync jobs, may reschedule
                try:
                    provisioner.update_jobs()
                except BudgetException:
                    no_budget = True
                    
                # Statistics
                provisioner.update_wf_pred()
                statistics.schedshot(provisioner)
                statistics.snapshot(provisioner.timestamp, provisioner.schedule.entries, provisioner.machines)
                
            elif monitor and monitor.workflow.jobs:
                monitor.update_timestamp()
                monitor.sync_machines()
                monitor.sync_jobs()
                statistics.snapshot(monitor.timestamp, monitor.entries, monitor.machines)
                
        sys.stdout.flush()
    
    if monitor == None:
        entries = provisioner.schedule.entries
    else:
        entries = monitor.entries
    
    statistics.jobs(entries)
    statistics.dump()
    
    if provisioner.exp:
        try:
            provisioner.exp.deprovision()
        except Exception:
            pass
#.........这里部分代码省略.........
开发者ID:rika,项目名称:dynamic-provisioning,代码行数:103,代码来源:server.py


注:本文中的monitor.Monitor.sync_machines方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。