我有一个基于 Flask 的程序(对我而言)基本上等同于 SO 答案中的示例https://stackoverflow.com/a/14180227(来源:https ://github.com/stackforge/ironic-discoverd/ blob/master/ironic_discoverd/main.py),简化:
eventlet.monkey_patch(thread=False) # change to True to break
@app.route('/', methods=['GET', 'POST'])
def api():
eventlet.greenthread.spawn_n(do_some_job) # is not called
def main():
app.run()
当我使用 eventlet.monkey_patch(thread=False) 一切都很好。当我设置 thread=True 时,eventlet.greenthread.spawn_n(例如https://github.com/stackforge/ironic-discoverd/blob/master/ironic_discoverd/introspect.py#L76)在这里什么都不做,即控制永远不会产生到它,虽然 Flask 应该已经打补丁了。
有任何想法吗?
Eventlet 0.15.2、Python 2.7.5、Flask 0.10.1