Как использовать асинхронную функцию внутри задачи celery?
Я пишу бот в айограм, нашел несколько похожих вопросов, но не смог найти то, что мне нужно.
У меня есть асинхронная функция, которую я хочу использовать в своей задаче celery, но не могу вызвать ее внутри задачи. Есть ли способ сделать это?
db.py
async def select_users():
sql = "SELECT * FROM Users WHERE "
sql, parameters = self.format_args(sql, parameters=kwargs)
return await self.execute(sql, *parameters, fetchrow=True)
tasks.py
from .celery import app
import db
@app.task
def update_credits():
users = db.select_users() #как вызвать асинхронную функцию?
print(users)
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Пока не очень хочется залезать в celery, но если там обычные воркеры, то должно сработать:
from .celery import app
import db
import asyncio
@app.task
def update_credits():
users = asyncio.run(db.select_users())
print(users)
Если не прокатит, то напиши в комментариях ошибку... есть ещё варианты.
П.с. обрати внимание на self - она не определенна.