Lau*_*ent 12 ruby-on-rails worker redis sidekiq
我不明白.
根据Sidekiq文档,每个worker(我的名为FeedWorker)只能包含一个名为perform的方法.那么,如果我想通过同一个工作者运行多个方法呢?
例如,我的FeedWorker(你猜对了,它处理一个活动源)应该运行以下3种方法:
announce_foo
announce_bar
invite_to_foo
Run Code Online (Sandbox Code Playgroud)
我不认为这是一种无理的期望.我相信其他人都考虑过这一点.我不是天才,但我知道我并没有在这里期待新的理由.然而,目前尚不清楚如何做到这一点.
现在,看起来我必须以这种方式编码:
def perform(id, TYPE)
if TYPE == BAR
Bar.find(id) and_announce_bar
else
Foo.find(id) and_announce_foo
end
end
Run Code Online (Sandbox Code Playgroud)
无聊和丑陋的代码.那里一定有更好的.任何帮助赞赏!
performmethod是您的Worker的入口点.在其中,您可以根据需要创建任意数量的实例方法,以便根据您的需要组织代码.尽管让工作人员代码尽可能地保持苗条,但这是一个很好的做法.例如,从内部调用其他对象是实现这一目标的一种方法.您会发现您的代码也更容易测试.
| 归档时间: |
|
| 查看次数: |
4751 次 |
| 最近记录: |