Ruby on rails Ruby on Rails是否支持在Windows上异步处理\u?
我正在Windows XP上试用,已经安装了所有必需的组件,但是Ruby on rails Ruby on Rails是否支持在Windows上异步处理\u?,ruby-on-rails,delayed-job,Ruby On Rails,Delayed Job,我正在Windows XP上试用,已经安装了所有必需的组件,但是agent.rb中的代码不起作用: # The call that doesn't work Agent.async_receive(agent.id, agents_to_events[agent.id].uniq) # ... def async_receive(agent_id, event_ids) # See github... end handle_asynchronously :async_r
agent.rb
中的代码不起作用:
# The call that doesn't work
Agent.async_receive(agent.id, agents_to_events[agent.id].uniq)
# ...
def async_receive(agent_id, event_ids)
# See github...
end
handle_asynchronously :async_receive
如果我内联async\u receive
代码,它工作正常,但是如果我查看/delayed\u作业
,我会看到:
ID: 26
Priority: 10
Attempts: 0
Handler: --- !ruby/object:Delayed::PerformableMethod
object: !ruby/class 'Agent'
method_name: :async_receive_without_delay
args: [...]
我注意到方法名已经变成了:async\u receive\u without\u delay
,但我不知道这有什么意义
更新:我进一步注意到,运行
rake jobs:work
会导致上述async\u receive
正常工作。我是否缺少某个初始化?为了使通过handle\u异步
或delay
排队的作业得到执行,您需要运行一个或多个延迟作业实例。有不止一种方法可以做到这一点,其中之一就是
rake jobs:work
另一个是
ruby script/delayed_job start
你可能希望设置一些类似上帝的东西来重新启动延迟的工作人员,如果他们停止工作的话 会发生什么?你是在拖延工作吗?你到底是什么意思?我添加了gem,但也许我错过了某个地方的初始化?我自己也得出了类似的结论。我发现了这个项目,它现在将我的事件移动到
delayed_job
队列中,所以现在如果我打开了两个DOS窗口,其中包含bundle exec rails runner bin/schedule.rb
和rake jobs:work
一切正常!有更好的方法吗?