分布式任务调度,作业队列

时间:2014-11-10 12:07:52

标签: javascript mysql node.js amazon-ec2 cron

我必须通过电子邮件发送某个任务通知,该通知需要每隔6小时发送给期望它的用户。所以我使用node-cron在我的服务器上安排一个工作,每30分钟唤醒一次,检查是否有用户没有回复他们的电子邮件,使用带有updated_at col的mysql db进行跟踪。工作正常!

但现在我必须让它在分布式环境中工作。使用带有1-4个微型ec2实例的Elastic Beanstalk。我不想添加除我拥有的任何其他db / storage /队列(MySQL)。

  • 有人可以列出与node-cron一起执行此操作的步骤。 (确保某项任务执行一次,我不想在6小时之前发送通知)
  • 或者我们是否有其他一些可以在mysql中执行此操作的库,确保只执行一次任务
  • 当我的服务器或数据库上的负载不紧张时,我可以执行该任务,而不是30分钟。
  • 有没有办法在不使用db(和多个实例)的情况下执行此操作,因为每隔30分钟安排一次工作正常!

要添加,我的api服务器和工作人员是一样的。

1 个答案:

答案 0 :(得分:0)

我遇到过用Python开发的这个解决方案:Celery

  

" Celery是基于分布式的异步任务队列/作业队列   消息传递。它专注于实时操作,但支持   也安排。"

  1. 可以与几个Python框架集成(Django,Pylons,...): http://docs.celeryproject.org/en/latest/getting-started/introduction.html#framework-integration

  2. 但您更喜欢Node.js ,因此您也可以将其与其他语言一起使用,它可以通过HTTP Callback(Webhooks)进行集成: http://docs.celeryproject.org/en/latest/userguide/remote-tasks.html