我是不熟悉烧瓶(芹菜)异步任务的人。我的目标是实现一个异步任务队列。
我有一个Flask Restful API来调用任务。 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
运行此命令时,由于apply_async总是执行if语句,所以我的问题是如何在异步任务中正确实现if子句?
感谢您的帮助!
答案 0 :(得分:0)
如果我错了,请纠正我,
get_data
的芹菜任务Data
中定义了一个api 现在在任务中
if isin in df["data"].tolist():
isin
赋予什么价值,它始终在运行看着代码,我认为代码没有问题。
数据似乎更像是个问题。
请您共享测试代码所使用的isin
和df["data"].tolist()
的值。