如何在芹菜任务中调用 Python 3.5 异步函数?



我在Python 3.5中有一个异步函数,如下所示:

async def get_pool():
if Cache.__current:
return Cache.__current
Cache.__current = await aioredis.create_redis_pool(
(settings.CACHE_SETTINGS['SERVER'], settings.CACHE_SETTINGS['PORT']),
minsize=settings.CACHE_SETTINGS['MIN_SIZE'],
maxsize=settings.CACHE_SETTINGS['MAX_SIZE'])
return Cache.__current

以及调用异步 get_pool(( 函数并对其数据执行操作的芹菜定期任务:

@app.task
def check_data_task():
cache = Cache.get_pool()
...

正如预期的那样,此代码给出一个错误:

("'coroutine' object has no attribute XXX method'")  

现在是提出问题的时候了:

  1. 这是在芹菜任务中使用 Python 异步函数的好主意吗? 如果是,那么:
  2. 如何在芹菜任务中使用 Python 协程函数?
from asgiref.sync import async_to_sync
async def get_pool():
if Cache.__current:
....
@app.task
def check_data_task():
...
async_to_sync(get_poll)

相关内容

  • 没有找到相关文章

最新更新