在多台计算机上使用delayed_job,其中一些任务需要在本地运行

Chr*_*Foy 4 ruby-on-rails delayed-job

我正在尝试将delayed_job用于rails应用程序的各个部分.问题是,如果我们有多个应用程序实例正在运行,但某些工作(例如处理上传)需要由本地工作人员运行,而其他人可以通过任何工作人员运行来获益.

有没有人对有本地/非本地工作类型的好方法有任何建议?

ide*_*lum 8

我刚刚在最新一期的Rails杂志中读到了"后台处理与delayed_job",我想到你可能会滥用内置的作业优先级系统.

您可以为工人指定最低和最高优先级.现在,如果您的特殊本地工作优先级为42,那么该工作人员将只处理这些工作......

rake jobs:work RAILS_ENV=production MIN_PRIORITY=42 MAX_PRIORITY=42
Run Code Online (Sandbox Code Playgroud)

虽然这个工人将处理除了那些特殊的本地工作以外的所有工作:

rake jobs:work RAILS_ENV=production MIN_PRIORITY=0 MAX_PRIORITY=10
Run Code Online (Sandbox Code Playgroud)

这应该足够灵活,以实现您的需求.但是,我很自然地承认,我今天才了解这个功能,并没有自己试过,所以YMMV!