Python 如何强制芹菜应用动态时间链任务?

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

假设我有以下代码,其中我需要依赖于其他任务的任务,但有些任务是长期运行的,并且需要某种类型的。加入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',
        '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'