后台任务完成后如何通知用户?

mys*_*eim 1 ruby-on-rails background-process sidekiq

我使用 RailsActiveJobsidekiq作为后端。当用户进入页面sidekiq创建一个长期后台任务时,我如何通知用户(通过在网页上呈现部分)何时完成任务?

Rails 和 sidekiq 作为不同的进程工作。这个事实让我感到困惑,我不明白如何使用后台作业处理完成状态。

Nim*_*mir 5

ActiveJob提供after_perform回调,根据文档工作如下:

class VideoProcessJob < ActiveJob::Base
  queue_as :default

  after_perform do |job|
    UserMailer.notify_video_processed(job.arguments.first)
  end

  def perform(video_id)
    Video.find(video_id).process
  end
end
Run Code Online (Sandbox Code Playgroud)

因此,您不必担心直接与Sidekiq或任何其他队列后端集成,请联系ActiveJob:)

  • @mystdeim 这里的问题是哪个网页!用户可以去找任何人,对吗?任何可能的渲染/重定向都不是一个好主意。而是使用一些由`ActionCable` 订阅触发的通知模式。将尝试发布一些代码,但应该不难。祝你好运 (2认同)