簡體   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