首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复作业的resque-status和resque-scheduler

重复作业的resque-status和resque-scheduler
EN

Stack Overflow用户
提问于 2012-11-20 04:03:55
回答 1查看 1.4K关注 0票数 0

我的resque系统有以下配置(没有rails,只有Sinatra base),其中我从一个yml文件调度了一堆重复的作业

代码语言:javascript
复制
resque (1.23.0)
resque-scheduler (2.0.0)
resque-status (0.4.0)

定期计划显示在“计划”选项卡上,当我单击“立即排队”按钮时,状态也显示在“状态”选项卡上,问题是当定期作业自动运行时,它们不会出现在“状态”选项卡上。我的resque_schedule.yml看起来像这样

代码语言:javascript
复制
email_notifier:
  every: 5m
  custom_job_class: Process_Notification_Emails
  queue: email_notifier
  args: 
  description: "Process mail notifications"

注意:这些计划的作业实际上每5分钟运行一次,并按预期运行,唯一的问题是它们不会出现在'Statuses‘选项卡上,除非我手动将它们排入队列

你知道我在哪里做错了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-20 04:15:57

针对resque-status (和其他自定义作业)的

支持

一些Resque扩展,如resque-status,使用具有稍微不同的API签名的自定义作业类。Resque-scheduler并不是试图支持所有现有的和未来的自定义作业类,相反,它支持一个调度标志,这样你就可以扩展你的自定义类,使其支持调度的作业。

假设我们有一个名为FakeLeaderboard的JobWithStatus类

代码语言:javascript
复制
class FakeLeaderboard < Resque::JobWithStatus
  def perform
    # do something and keep track of the status
  end
end

,然后是一个时间表:

代码语言:javascript
复制
create_fake_leaderboards:
  cron: "30 6 * * 1"
  queue: scoring
  custom_job_class: FakeLeaderboard
  args:
  rails_env: demo
  description: "This job will auto-create leaderboards for our online demo and the status will update as the worker makes progress"

如果您的扩展不支持计划作业,则需要扩展自定义作业类以支持#scheduled方法:

代码语言:javascript
复制
module Resque
  class JobWithStatus
    # Wrapper API to forward a Resque::Job creation API call into
    # a JobWithStatus call.
    def self.scheduled(queue, klass, *args)
      create(*args)
    end
  end
end

https://github.com/bvandenbos/resque-scheduler#support-for-resque-status-and-other-custom-jobs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13461281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档