繁体   English   中英

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

[英]Distributed Task Scheduling, Job Queue

我必须通过电子邮件发送某些任务通知,该通知需要每6小时发送给希望收到该通知的用户。 因此,我已经使用node-cron在服务器上安排了一个作业,该作业每30分钟醒来一次,以检查是否有用户没有响应他们的电子邮件,并使用mysql db和updated_at col进行跟踪。 工作正常!

但是现在我必须使其在分布式环境中工作。 将Elastic Beanstalk与1-4个micro ec2实例一起使用。 我不想添加除我拥有的以外的任何其他数据库/存储/队列(MySQL)。

  • 有人可以与Node-cron一起列出执行此操作的步骤吗? (确保某项任务执行一次,我不想在6小时之前发送通知)
  • 或者我们是否可以在mysql中执行此操作的其他库来确保任务仅执行一次
  • 当服务器或数据库的负载不紧张时,我可以执行30分钟以上的任务。
  • 有没有一种方法可以在不使用db(和多个实例)的情况下做到这一点,因为每30分钟安排一次工作就可以了!

要添加的是,我的api服务器和worker是相同的。

我遇到了用Python开发的此解决方案: Celery

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM