每隔一段时间安排任务的最佳工具?

时间:2016-12-29 23:56:31

标签: python rabbitmq

我有一个服务,我用Python编写,允许用户安排任务以不同的间隔发生。任务的例子是:

  • 任务A:每10秒进行一次状态检查
  • 任务B:每3秒进行一次状态检查
  • 任务C:每15秒进行一次状态检查

任务应该彼此独立运行。我还想确保Task A在之前的尝试完成之前无法再次运行。请记住,任务的数量是动态的,因此在它们运行的​​时间间隔内也是如此。

我看过RabbitMQ,但我很难决定它是否能够做到这一点。

2 个答案:

答案 0 :(得分:1)

我最近一直在使用芹菜去做你想要达到的目标。使用celery,您可以创建任务,这些任务本质上是您分配给任务队列的函数。您还可以定期运行芹菜任务,无论是每x秒还是更多crontab样式的方法。

查看芹菜文档中的定期任务,看它是否适合您的尝试。芹菜使用rabbitmq或redis(主要)。每个任务都在与主程序分开的线程中运行。

答案 1 :(得分:1)

您应该设置几个任务队列,每个任务类型一个。然后,当您要执行新任务时,只需将其放入队列即可。这可以确保它们按照您选择的顺序,有序和一致的间隔发生。

考虑Amazon Simple Queue Service (SQS)Amazon Simple Workflow Service,而不是维护自己的RabbitMQ / Celery个实例。

查看有关using Python boto3 library with SQS

的信息