Я новичок в асинхронной задаче с колбой (сельдерей). Моя цель - реализовать очередь асинхронных задач.
У меня есть API-интерфейс успокоительного вызова Flask, вызывающий задачу. Resource.py выглядит следующим образом:
from flask_restful import Resource, reqparse
from app.tasks import get_data
class Data(Resource):
def get(self, isin):
output = get_data.apply_async(args=[isin])
output_done = output.get()
return output_done
, который вызывает задачу в task.py:
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')
@app.task(name='get_data')
def get_data(isin):
df = pd.read_sql_table("data", engine)
if isin in df["data"].tolist():
subset = df[df["data"] == isin].iloc[0]
output = some_calculation
return output
return {'message': 'data not found'}, 404
Когда я запускаю это, оператор if всегда выполняется из-за apply_asyncТак что мой вопрос в том, как правильно реализовать предложение if в асинхронной задаче?
Спасибо за помощь!