我在gunicorn Web服务器上托管了一个flask应用程序,并试图并行化长时间运行的I / O绑定任务“ somemethod”,如下所示。但是,有时(并非总是)它会引发错误“事件循环已关闭”。错误是随机发生的原因是什么?
删除loop.close()可以修复错误,但是我不确定python worker进程中是否存在内存泄漏。
async def somemethod():
""" Do some work """
app.route('/hello', method=['POST'])
def sayhello():
loop = asyncio.new_event_loop()
try:
asyncio.set_event_loop(loop)
future = asyncio.ensure_future(somemethod)
loop.run_until_complete(future)
finally:
loop.close()