我在一个项目中使用 django ORM(在 django 之外)。我的工作流程是
- 通过 django ORM 选择对象和
- 然后使用 asyncio lib 将其发送到消息队列
问题是你不能在异步环境中调用阻塞函数,你不能在阻塞环境中使用 async/await。
我想出了2个解决方案:
整个程序应该是异步的。并
loop.run_in_executor在需要时用于调用阻塞函数。整个程序应该是同步的。并使用
asyncio.run()(Python 3.7)调用所需的异步函数。
我无法决定哪种方法更好。
我知道以前有人问过类似的问题。我的问题是尝试结合阻塞和非阻塞代码时是否有一般规则?