【问题标题】:Sidekiq returning job idSidekiq 返回作业 ID
【发布时间】:2016-01-15 05:06:18
【问题描述】:

我有一个check_delivery 方法,它使用 Sidekiq 调用 EasyPost api gem。

  def check_delivery
    if tracking_number.present?
      EasypostWorker.perform_async(tracking_number)
    end
  end

class EasypostWorker
  include Sidekiq::Worker

  def perform(tracking_number)
    EasyPost.api_key = Rails.application.secrets.easypost_api_key
    tracker = EasyPost::Tracker.create(tracking_code: tracking_number)
    tracker.status
  end
end

但是,这会返回 24 个随机字符 Sidekiq 作业 ID,而不是跟踪器状态(即“out_for_delivery”、“delivered”等)

我做错了什么?

【问题讨论】:

  • 这是因为在调用perform_async 时,它会将其发送到后台进程并且不会立即执行。你到底想做什么?
  • 作为@axsuul 回答的补充,您可以使用sidekiq-status 来跟踪您的工作进度并设置一个ajax 轮询以在您的工作完成时向您的用户显示状态。

标签: ruby-on-rails sidekiq easypost


【解决方案1】:

check_delivery 方法调用了 EasypostWorker,它返回了作业 ID。

显然 Sidekiq Workers 不会像常规的 ruby​​ 类和方法那样返回结果。

所以我在我的模型中添加了一个status 属性并更新了 Worker 内部的属性。

【讨论】:

    猜你喜欢
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多