使用 Sidekiq 将工作结果传递给其他工作
Pass job results to other job with Sidekiq
我打了一个 API 电话来获取电子邮件地址。成功后,我想将此电子邮件地址传递给另一份工作。我使用 sidekiq 和 sidekiq-batch 宝石。
class HandleWebhookJob
def perform
batch = Sidekiq::Batch.new
batch.description = "Handling webhook"
batch.on(:success, HandleWebhookJob::OtherJob, { email: @email })
batch.jobs do
@email = GetEmailJob.perform_async # returns email address
end
end
class OtherJob
def on_success(status, options)
puts options # no email address here - nil
# need to pass it to UseEmailJob.perfom_async(options[:email])
end
end
end
我认为将 GetEmailJob 的结果分配给 @email 是行不通的。找不到有关如何执行此操作以及是否可能的示例。
我认为您在 @email
中获得了 jid
。
您可以使用 prefix:jid
密钥将 GetEmailJob
中的电子邮件保存到某些存储(例如 redis)并从那里取出它们吗?
我打了一个 API 电话来获取电子邮件地址。成功后,我想将此电子邮件地址传递给另一份工作。我使用 sidekiq 和 sidekiq-batch 宝石。
class HandleWebhookJob
def perform
batch = Sidekiq::Batch.new
batch.description = "Handling webhook"
batch.on(:success, HandleWebhookJob::OtherJob, { email: @email })
batch.jobs do
@email = GetEmailJob.perform_async # returns email address
end
end
class OtherJob
def on_success(status, options)
puts options # no email address here - nil
# need to pass it to UseEmailJob.perfom_async(options[:email])
end
end
end
我认为将 GetEmailJob 的结果分配给 @email 是行不通的。找不到有关如何执行此操作以及是否可能的示例。
我认为您在 @email
中获得了 jid
。
您可以使用 prefix:jid
密钥将 GetEmailJob
中的电子邮件保存到某些存储(例如 redis)并从那里取出它们吗?