【问题标题】:Should the resque-scheduler queue be expected to handle /lots/ of delayed jobs?是否应该期望 resque-scheduler 队列处理 /lots/ 的延迟作业?
【发布时间】:2012-01-21 14:07:47
【问题描述】:

我目前在一个应用程序中使用 resque 和 resque-scheduler,它必须处理大量重复性工作 - “每小时执行一次”、“每天执行一次”等。目前,我只是将作业本身中作业的下一次运行,HourlyJob 队列有一个 .enqueue_at(1.hour.from_now, HourlyJob) 等。

我应该这样做吗?它“感觉”就像我应该使用 resque-scheduler cron 类型的功能进行静态重复工作,然后安排说接下来 5 分钟的延迟工作......但我真正做的只是将工作从(可能快速的,基于redis的)resque-scheduler到我的(可能实现得不太好,基于mysql的)代码,确定吗?

我现在的做法有什么问题吗?

【问题讨论】:

    标签: ruby-on-rails ruby resque


    【解决方案1】:

    我个人会使用 resque-scheduler 提供的 cron 样式,您的用例正是它的用途:

    • 您更直接地表明这些是经常性工作。
    • 所有内容都位于同一个 YAML 文件中,而不是多个作业类/模块中。

    通过在实际作业中排队作业的下一次运行:

    • 当您的工作人员/作业/服务器出现故障时,您将面临下一次运行丢失的风险。
    • 您在 Redis 中不必要地使用了更多内存,调度程序进程在准备好运行之前不会将作业添加到 Redis。

    啤酒花这有帮助。

    【讨论】:

    • 感谢您的评论。 :) 问题是这些作业不是静态的,而 cron 样式的调度程序似乎只适用于静态作业 - 将会有许多动态的、重复的作业,这就是我的问题。有没有一种方法可以“重新散列”类似 cron 的作业文件,而无需在每次安排新作业时重新启动 schduler?
    猜你喜欢
    • 2017-09-27
    • 1970-01-01
    • 2011-08-30
    • 2016-05-29
    • 2012-11-22
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多