我正在使用一个执行异步函数的模块,通过抓取来获得注释,代码在Python脚本中工作得很好,但Django似乎不能执行asyncio代码。我收到一个错误,说
线程' thread -3‘中没有当前事件循环。
def comments(request):
if request.method == 'POST':
async def main():
q = Query('Donald Trump', limit=20)
async for tw in q.get_comments():
print(tw)
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(main())
loop.run_until_complete(loop.shutdown_asyncgens())
finally:
loop.close()
form = CommentForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('/index.html')
else:
form = CommentForm()
return render(request, 'index.html', {'form': form})通过在线程内部使用Asyncio进行一些肮脏的线程工作,我可以执行循环,但只能执行一次。
发布于 2018-03-18 03:34:48
错误消息There is no current event loop in thread 'Thread-3'.表明您正在从主线程外部访问asyncio。您可以使用set_event_loop来设置它:
def run_coro(coro):
try:
loop = asyncio.get_event_loop()
except RuntimeError:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
return loop.run_until_complete(coro)然后,在comments中
run_coro(main())https://stackoverflow.com/questions/49335766
复制相似问题