如何按计划执行任务



我具有一些任务,这些任务保存在db中。我需要在某些时间执行任务。我对克朗或芹菜进行了兴趣,但我只看到功能像重复的动作一样,但是我需要及时地保存在我的数据库中。我该怎么做?

一个规范的解决方案是让每x分钟运行一个cronjob,以查找您的DB,以执行要执行的任务并为每个任务启动芹菜任务(因此,任务执行为异步(。您必须在比赛条件上要谨慎,因此不同时执行相同的任务(芹菜任务应检查和更新DB任务状态,或者您可以将REDIS用作任务锁(。

此外,芹菜已经为编程未来任务执行提供了ETA功能 - 根据上下文,它可能不足或不足。

我想您正在寻找芹菜beat_schedule

app.conf.beat_schedule = {
    # Starts to run task on specific time.
    'your-task-name': {
        'task': 'your.tasks.path.name',
        'schedule': crontab(
            minute=[get it from database],
            hour=[get it from database]
        ),
    },
}

这是芹菜的文档:https://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

相关内容

  • 没有找到相关文章