我尝试在我的Django后处理中使用asyncio,如下所示:
query : # a query to my model
tasks = []
for record in query:
tasks.append(do_something_with_google_calendar(record))
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
loop.close()但是我只是在执行的时候得到了一个错误:
loop = asyncio.get_event_loop()
RuntimeError: There is no current event loop in thread 'Thread-17'.有什么想法吗?
提前谢谢你
发布于 2017-09-10 19:15:17
你的原始代码将无法工作,因为get_event_loop()方法只是get_event_loop_policy().get_event_loop()的快捷方式,它只为主线程自动创建和返回事件循环。要使其正常工作,您需要显式地为每个当前线程上下文创建和设置新的事件循环:
query : # a query to my model
tasks = []
for record in query:
tasks.append(do_something_with_google_calendar(record))
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(asyncio.wait(tasks))
loop.close()你可以在here上阅读更多关于这个东西的内容。
发布于 2017-01-12 00:06:44
看起来,如果我这样做,它是有效的:
query : # a query to my model
tasks = []
for record in query:
tasks.append(do_something_with_google_calendar(record))
loop = asyncio.SelectorEventLoop()
asyncio.set_event_loop(loop)
loop.run_until_complete(asyncio.wait(tasks))
loop.close()我希望它是稳定的,并且在UNIX中也能像在Windows中一样工作得很好
https://stackoverflow.com/questions/41594266
复制相似问题