如何强制 celery 应用动态时间链任务?

问题描述

假设我有以下代码,我需要依赖于其他任务的任务,但有些任务是长时间运行的,并且需要某种类似的 .join asyncio,它会等待一个任务结束才能继续下一个任务,但我的工作流程如下,但一切都需要与入口点函数/任务异步,在那里它将成为我所有链接任务的调用者或另一种方法,以保持动态时间始终从其内部永远运行

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','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'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...