Heroku 最佳实践时钟与 node.js

Posted

技术标签:

【中文标题】Heroku 最佳实践时钟与 node.js【英文标题】:Heroku best practice clocks with node.js 【发布时间】:2013-07-28 08:50:25 【问题描述】:

我想知道在 Heroku 上设置时钟进程的最佳方法是什么。我的应用完全在 Node 中构建,我计划使用 node-schedule 来指定我的日程安排。

我的问题是:时钟进程本身是否应该触发我的 cron 进程中的事件并在它自己分配的测功机中运行它们? Heroku 似乎表明您应该使用工人来处理这个问题。在这种情况下,我想知道如何让我的时钟进程告诉工作人员运行特定程序?

我一直在阅读执行此操作的 Python 方法,似乎它们只是在同一个测功机中触发该过程。

谢谢。

【问题讨论】:

不知道,但我想知道。所以+1 看看这个答案:***.com/a/58074812/2516399 【参考方案1】:

Heroku 表示时钟进程应该触发一个新的测功机,这对可扩展性很有意义,因为您可以将频率提高到 11 并中断时钟进程。 https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes

我会使用https://github.com/toots/node-heroku 在单独的一次性测功机中启动新流程。但是,如果您想拥有一个处理时钟进程的工作人员池,那么您将需要一个像 Resque 或 Kue 这样的队列。时钟进程将新任务加入队列,工作进程将它们出列。

【讨论】:

这似乎需要很多努力。我只是每小时和午夜触发一个过程。有没有办法使用他们提供的计划应用程序并告诉它在单独的测功机中工作? 大声笑更正:并不意味着工作量很大。对于我的需求来说,这似乎有点矫枉过正。你认为我可以运行一个时钟/工作进程并按照我的意愿手动触发时间表吗? 我们对免费的 Heroku 调度程序插件非常满意,它可以每小时或每天启用 run node send_emails.js。 addons.heroku.com/scheduler @dankohn 我在调度程序中将任务添加为run node my_task.js,但在生成命令运行时出现错误未找到?你知道添加调度器的语法吗? @OliverJ90 回答有点晚了,但对于未来的读者,应该在没有run 的情况下添加任务,例如node my_task.js,或者npm run something

以上是关于Heroku 最佳实践时钟与 node.js的主要内容,如果未能解决你的问题,请参考以下文章

设计 Node.js REST API 的 10 条最佳实践

Node.js 上 MongoDB 连接的最佳实践是啥?

使用 Node.js 构建网站的最佳实践

使用 Node.js 构建网站的最佳实践

最佳实践 beanstalkd (queue) 和 node.js

typescript node.js express 路由分隔文件的最佳实践