Python 如何强制芹菜应用动态时间链任务?
假设我有以下代码,其中我需要依赖于其他任务的任务,但有些任务是长期运行的,并且需要某种类型的。加入asyncio,它会等待一个任务结束,然后继续执行下一个任务,但我的工作流如下所示,但是,每件事情都需要与一个入口点函数/任务异步,在这里它将是所有链接任务的调用方,或者是另一种保持动态时间始终从其内部运行的方法Python 如何强制芹菜应用动态时间链任务?,python,celery,celery-task,celerybeat,Python,Celery,Celery Task,Celerybeat,假设我有以下代码,其中我需要依赖于其他任务的任务,但有些任务是长期运行的,并且需要某种类型的。加入asyncio,它会等待一个任务结束,然后继续执行下一个任务,但我的工作流如下所示,但是,每件事情都需要与一个入口点函数/任务异步,在这里它将是所有链接任务的调用方,或者是另一种保持动态时间始终从其内部运行的方法 daily_cleanup > runs each minute fix_unknown_emplids runs each 5 minutes get_role_people r
daily_cleanup > runs each minute
fix_unknown_emplids runs each 5 minutes
get_role_people runs each minute
import_grads runs each 10 minute
范例
beat_schedule = {
'daily_cleanup': {
'task': 'celery_app.tasks.daily_cleanup',
'schedule': timedelta(seconds=60),
},
'fix_unknown_emplids': {
'task': 'celery_app.tasks.fix_unknown_emplids',
'schedule': timedelta(seconds=300),
},
'get_role_people': {
'task': 'celery_app.tasks.get_role_people',
'schedule': timedelta(seconds=60),
},
'import_grads': {
'task': 'celery_app.tasks.import_grads',
'schedule': timedelta(seconds=600),
}
}
def chain_demo():
tasks = [
daily_cleanup.si(), # 1 min
fix_unknown_emplids.si(), # 5 min
get_role_people.si(), # 1 min
import_grads.si(), # 10 min
]
chain(*tasks).apply_async()
@app.task
def daily_cleanup():
time.sleep(60)
return '60'
@app.task
def fix_unknown_emplids():
time.sleep(300)
return '300'
@app.task
def get_role_people():
time.sleep(60)
return '60'
@app.task
def import_grads():
time.sleep(600)
return '600'