那么,如何正确运行异步任务来达到目标呢?
这是什么RuntimeError: await wasn't used with future(如下),我该如何修复它?
我已经尝试过:
async_to_sync(来自 asgiref https://pypi.org/project/asgiref/)。
此选项可以运行 asyncio 协程,但重试功能不起作用。
(https://pypi.org/project/celery-pool-asyncio/)
与 asgiref 中的问题相同。(此选项可以运行 asyncio 协程,但重试功能不起作用。)
我已经尝试创建自己的装饰器,例如运行协程线程安全(asyncio.run_coroutine_threadsafe)的 async_to_sync ,但我的行为如上所述。
我还尝试asyncio.run()或asyncio.get_event_loop().run_until_complete()(和self.retry(...))内部芹菜任务。这运行良好,任务运行,重试有效,但是协程执行不正确 - 在async函数内部我无法使用 aioredis。
实施注意事项:
celery -A celery_test.celery_app worker -l info -n worker1 -P gevent …