我想创建 periodic 任务,它可以查询数据库,从数据提供者处获取数据,发出一些API请求,格式化文档并使用其他API发送它们。
上一个任务的结果应该链接到下一个任务。我从文档中得到了我必须使用链,组和和弦才能组织链接。
但是,我从文档中得到了什么:不要从任务中运行子任务,因为它可能是死锁的原因。
所以,问题是:如何在周期性任务中运行子任务?
@app.task(name='envoy_emit_subscription', ignore_result=False)
def emit_subscriptions(frequency):
# resulting queryset is the source for other tasks
return Subscription.objects.filter(definition__frequency=1).values_list('pk', flat=True)
@app.task(name='envoy_query_data_provider', ignore_result=False)
def query_data_provider(pk):
# gets the key from the chain and returns received data
return "data"
@app.task(name='envoy_format_subscription', ignore_result=False)
def format_subscription(data):
# formats documents
return "formatted text"
@app.task(name='envoy_send_subscription', ignore_result=False)
def send_subscription(text):
return send_text_somehow(text)
对不起这个菜鸟问题,但我确实是Celery的菜鸟。
答案 0 :(得分:0)
这样的事可能吗?
import time
while True:
my_celery_chord()
time.sleep(...)