在我的rails应用中,我尝试将视频上传移至后台任务。我创建了一个Sidekiq工作者,但需要在任务结束时呈现JSON响应(我以前在控制器中完成的操作)。例如,这就是当前控制器的样子:
# start sidekiq worker
VideoUploaderWorker.perform_async(video_info)
respond_to do |format|
if @video.save
# add thumbnail image id to video
@video.update_attributes(:image_id=>@image.id)
# update project
@video.project.touch
format.js {
if params[:video]
render 'images/create'
else
logger.debug("sending JSON video id #{@video.id.to_json}")
video_info = @video.id, @video.video_path_url
render :json => video_info.to_json
end
}
else
Rails.logger "video save failed"
Rails.logger.info(@video.errors.inspect)
format.json { render :json => @video.errors, :status => :unprocessable_entity }
end
end
end
如何从sidekiq后台作业渲染JSON?
答案 0 :(得分:2)
你无法从sidekiq后台工作者渲染Json。
后台线程是队列,当服务器可以自由处理进程繁重的任务时,它将在后台运行。
当我们不希望用户等待进程结束时,它特别有用,而是将任务放入队列(稍后执行)。
示例用例,
所以创建一个视频上传线程,发布你可以在控制器本身渲染一个json。