【问题标题】:Is delayed_job async?delay_job 是异步的吗?
【发布时间】:2014-07-03 00:48:09
【问题描述】:

我正在尝试异步运行长任务。 但是一个任务同步运行。延迟作业 3.0.5 可以运行作业的异步吗?

我会尝试: 型号:

MyModel < ActiveRecord::Base

  def do_something
    sleep 10
  end
  #handle_asynchronously :do_something

end

我从控制器调用它:

def do_it
  new_do = MyModel.new id: 1
  new_do.delay.do_something
  render json: {"status":"200"}
end

在得到请求后,我仍在等待 10 秒,然后才给出响应。 那么,我在哪里错了,我该怎么做才能运行它并在 10 秒前收到控制器的响应?

【问题讨论】:

  • 您的操作do it 中的变量new_so 可能有拼写错误。
  • 你不应该同时使用delayhandle_asynchronously,一个排除另一个
  • 我稍后通过@rdlh 评论对此发表评论

标签: ruby-on-rails asynchronous delayed-job


【解决方案1】:

不应handle_asynchronouslydelay 一起使用。只使用其中一个,而不是同时使用两个。

如果您的方法应始终在后台运行,请首选#handle_asynchronously

Documentation here

【讨论】:

  • 是的,我尝试不使用“handle_asynchronously”。没有其他的。应用程序和工作人员重新启动,但作业仍然同步运行。我也尝试过使用“handle_asynchronously”而不使用“.delay”。无论如何都要同步一整天! ^)
  • 我正在使用脚本调用 RAILS_ENV=development script/delayed_job restart 并从数据库中手动删除delayed_job 记录。所以,我重新启动了 puma 和 nginx 和服务器。没有任何帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 2017-02-19
  • 2015-08-03
  • 2019-01-05
  • 2021-03-30
  • 2019-01-13
相关资源
最近更新 更多