问题标签 [clockwork]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
heroku - Heroku 时钟流程:如何确保作业不被跳过?
我正在构建一个依赖于预定作业的 Heroku 应用程序。我们之前使用的是 Heroku 调度器,但时钟进程似乎更加灵活和健壮。所以现在我们使用时钟进程在特定时间/间隔将后台作业排入队列。
Heroku 的文档提到,与所有测功机一样,时钟测功机每天至少重新启动一次——这会导致时钟进程跳过预定作业的风险:“由于测功机每天至少重新启动一次,因此需要一些逻辑在时钟进程启动时存在,以确保在测功机重新启动期间不会跳过作业间隔。” (见https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes)
有哪些推荐的方法可以确保不跳过预定的作业,并重新排队错过的任何作业?
一种可能的方法是在作业运行/排队时创建数据库记录,并在时钟作业中定期检查预期记录的存在。最大的缺点是,如果时钟测功机存在系统性问题,导致它在很长一段时间内停机,那么我不能每 X 小时进行一次轮询以确保计划的作业成功运行,因为该轮询发生在时钟测功机内。
您是如何处理时钟测功机弹性问题的?
谢谢!
ruby-on-rails - 安排发条仅在一年中的特定日期运行
我一直在尝试安排clockwork
仅在当天运行的作业,例如。2 月 14 日。但我不确定这是否可能,因为文档格式没有这种可能性。
我知道我可以做这样的事情:
但我想避免每天不必要的验证。
有任何想法吗?
谢谢你。
ruby-on-rails - 使用 Resque 排队重复作业的发条
我正在使用数据库事件和 resque 对特定任务进行排队,但它看起来像是多次将作业排队:
注意时间戳,它会在每分钟(来自对象的时间戳)对作业进行一次排队,并在发条与数据库同步后再次排队。
这是我的clock.rb:
和time_slot.rb:
感谢您的关注!
ruby-on-rails - 使用 Rails、Sidekiq 和 Clockwork 的 NameError
查看文档中的“示例clock.rb
文件” ,您可以看到我的代码完全遵循发条约定(?)。但是,我收到了这个似乎无法修复的错误。我尝试过对不同的变量进行复数和单数化。
这是我的clock.rb
文件:
本质上,我希望 Clockwork 将(1)循环遍历每个model_instance
如上所示,(2)通过数据库关联找到frequency_quantity
and frequency_period
(它们一起构成“时间”),以及(3)调用TwilioWorker
右侧的“时间”。
我试过用下面的代码替换块。当我运行时clock.rb
,我可以接到来自 Twilio 的电话:
ruby-on-rails - 将 ActiveJob 后台作业排队的发条
运行 Rails 4.2.0,所以我使用带有 Sidekiq 后端的 ActiveJob。我需要调用定期安排的后台作业,所以我希望使用 Clockwork,但我还没有看到任何关于如何将它与 ActiveJob 一起使用的示例。
这是我基于 Clockwork Github 示例的 lib/clock.rb:
更新:
我能够让它适用于我的情况,但我对解决方案并不完全满意,因为我必须加载整个环境。我只想要求最低限度的运行 ActiveJobs。
ruby-on-rails - 带有 Clockwork 触发器的 Sidekiq 但不处理 heroku 上的作业
运行:sidekiq 2.1.17,rails 3.2.21
我正在尝试使用发条来安排一些由 sidekiq 工作人员完成的重复性任务。在开发中运行工头,一切都按计划完美运行。
但是,当我部署到 heroku 时,我会在适当的时间在日志中收到“Triggering 'NameWorker.perform_async'”消息,但是相应的作业实际上并没有运行。
当我改为在控制器操作中调用 NameWorker.perform_async 时,作业会正常运行。我试图安排的作业只包含 puts 语句来验证它们是否正在工作。有人对我做错了什么有任何想法吗?提前致谢。
ruby - Clockwork 是否需要自己的流程?
我见过人们在几个不同的地方说发条应该在自己的测功机上运行,procfile 可能看起来像这样(heroku 的示例):
有什么理由不和工人在同一个测功机上运行它吗?使用看起来像这样的过程:
这种方式似乎工作得很好,但我想知道人们说不要这样做的根本原因。任何指导将不胜感激。提前致谢。
ruby-on-rails - 将时钟进程与 Docker 上的 sidekiq 工作人员分开
我目前正在努力将我的环境从 Heroku 移开,并且我的部分应用程序正在运行一个时钟进程,该进程启动了 Sidekiq 后台作业。
据我了解,Sidekiq 由一个客户端和一个服务器组成,客户端发送作业以排队到 Redis 中,服务器拉出队列的请求并处理它们。我现在正在尝试将我的应用程序拆分为 Docker 上的以下容器: - Redis 容器 - 时钟容器(使用 Clockwork gem) - 工作容器 - Web 应用程序容器(Rails)
但是,我不确定应该如何拆分这个 Sidekiq 服务器和客户端。本质上,时钟容器需要在其上运行 Sidekiq,以便客户端可以每隔一段时间将作业发送到 Redis 队列。但是,工作容器也应该在它们上运行 Sidekiq(虽然是服务器),以便它们可以处理作业。我认为在不同容器之间划分职责应该是很可能的,因为 Heroku 允许您将其划分为各种 dyno。
我可以想象一种方法是分配时钟容器来拉出一个不存在的队列,这样它就永远不会从队列中拉出任何作业,然后将工作人员设置为拉出一个存在的队列。但是,这对我来说似乎不是最理想的方法,因为它仍然会检查这个不存在的队列中的新作业。
关于我如何开始做这件事的任何提示或指南?
ruby-on-rails - 发条未登录到 Heroku 控制台
我正在使用 Clockwork gem 来运行一系列 rake 任务。一切看起来都不错,但似乎puts
命令没有出现在日志中,只是想知道是否有人知道为什么?
ruby-on-rails - 给定 :at => "some time" 时发条宝石不运行工作
我正在尝试为经常性工作设置发条。(Rails 4.2)app/clock.rb 中gem 自述文件中的以下代码有效,每 30 秒触发一次后台任务并发送电子邮件。
如果我将重复声明替换为以下内容,则它不起作用。
有什么想法吗?我搜索了其他有此问题的人,但找不到任何问题。我正在使用带活动作业的延迟作业进行排队。谢谢