1

我已经绘制了我想遵循的流程的流程图,但无法弄清楚如何执行此流程。目前我有以下内容。

t1 是一个不是cherrypy的数据库插入脚本。

def main():
    thread = ThreadUrl(queue)
    thread = thread()
    thread.start()
    cherrypy.config.update({'server.socket_host': '0.0.0.0',
                            'server.socket_port': 2970})
                            #'server.thread_pool': 100})
    queue.join()
    cherrypy.engine.start()
    while True:
        if thread.isAlive():
            try:
                cherrypy.engine.start()
            except Exception:
                print ('Started cherrypy already.')
            print ('I am alive.')
        else:
            try:
                thread.exit()
            except Exception:
                print ('Already killed this thread.')
            print ('I am dead.')
            try:
                cherrypy.engine.stop()
            except Exception:
                print ('Already stopped cherrypy.')
            try:
                thread.start()
            except Exception:
                print (sys.exc_info()[1])

if __name__ == '__main__':
    main()

我想按照这个流程图

4

1 回答 1

0

您可以在字典中创建状态表。每个节点都在一个函数中,该函数执行其操作,然后返回下一个状态,如下所示:

def start_t1():
    # Start t1.
    return "start cherrypy"

def start_cherrypy():
    # Start Cherrypy.
    return "is t1 alive?"

def is_cherrypy_alive():
    # Check whether Cherrypy is alive.
    if alive:
        return "stop cherrypy"
    return "start t1"

actions = {
    "start t1": start_t1,
    "start cherrypy": start_cherrypy,
    "is t1 alive?": is_t1_alive,
    "is cherry pie alive?": is_cherrypy_alive,
    ...
}

state = "start t1"
while True:
    state = actions[state]()
于 2012-07-11T19:19:00.323 回答