【发布时间】: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