如何结合Django应用asyncio协程与ThreadPoolExecutor实现多线程处理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计612个文字,预计阅读时间需要3分钟。
Django 视图函数执行时,不在主线程中,直接使用 loop=asyncio.new_event_loop() 创建异步事件循环。
Django视图函数执行,不在主线程中,直接loop = asyncio.new_event_loop()
# 不能loop = asyncio.get_event_loop() 会触发RuntimeError: There is no current event loop in thread
因为asyncio程序中的每个线程都有自己的事件循环,但它只会在主线程中为你自动创建一个事件循环。所以如果你asyncio.get_event_loop在主线程中调用一次,它将自动创建一个循环对象并将其设置为默认值,但是如果你在一个子线程中再次调用它,你会得到这个错误。
本文共计612个文字,预计阅读时间需要3分钟。
Django 视图函数执行时,不在主线程中,直接使用 loop=asyncio.new_event_loop() 创建异步事件循环。
Django视图函数执行,不在主线程中,直接loop = asyncio.new_event_loop()
# 不能loop = asyncio.get_event_loop() 会触发RuntimeError: There is no current event loop in thread
因为asyncio程序中的每个线程都有自己的事件循环,但它只会在主线程中为你自动创建一个事件循环。所以如果你asyncio.get_event_loop在主线程中调用一次,它将自动创建一个循环对象并将其设置为默认值,但是如果你在一个子线程中再次调用它,你会得到这个错误。

