lig*_*yrs 8 ajax ruby-on-rails comet polling delayed-job
我有一个Rails 3应用程序,当用户点击页面时,它使用delayed_job获取一些数据(使用类方法).如何向ajax进程指示类方法已运行(以便我可以停止轮询)?
编辑:
为了澄清,我想知道delayed_job何时运行,而不是在ajax进程成功时.然后我想将delayed_job完成状态传递给正在运行的ajax进程.
Pan*_*kos 13
通常,执行此操作的最佳方法是在数据库中存储作业进度的指示.例如:
class User
def perform_calculation
begin
self.update_attributes :calculation_status => 'started'
do_something_complex
self.update_attributes :calculation_status => 'success'
rescue Exception => e
self.update_attributes :calculation_status => 'error'
end
end
end
Run Code Online (Sandbox Code Playgroud)
这样当你排队时:
User.update_attributes :calculation_status => 'enqueued'
User.send_later :perform_calculation
Run Code Online (Sandbox Code Playgroud)
您可以在控制器中查询作业的状态:
def check_status
@user = User.find(params[:id])
render :json => @user.calculation_status
end
Run Code Online (Sandbox Code Playgroud)
轮询ajax进程然后只需调用check_status即可查看作业的进度,成功是否成功或失败.
归档时间: |
|
查看次数: |
2835 次 |
最近记录: |