在延迟作业中获取已创建作业的ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在延迟作业中获取已创建作业的ID相关的知识,希望对你有一定的参考价值。

我正在使用延迟作业在队列中添加一些电子邮件。我创建工作的方式如下:

EventNotifications.reminder("email", "name", id).deliver_later

其中EventNotifications是类,提醒是其中的方法。

这会在delayed_jobs表中创建一个作业,但我想获取作业的Id,因为我在delayed_jobs表中有一些我要更新的自定义字段。

运行上述代码后我目前得到的是:

#<ActionMailer::DeliveryJob:0x00000005eb22d8 @arguments=["EventNotifications", "reminder", "deliver_now", "email", "name", 12], @job_id="6a549235-e8c1-407b-ac75-be8736559eaa", @queue_name="mailers">

这没有创建的作业的ID。我如何获得该ID?

答案

您可以绕过ActiveJob并直接使用DelayedJob API。这有一个缺点,就是不要抽象你的工作系统。你可以这样做:

job = EventNotifications.delay.reminder("email", "name", id)

此时,您可以访问job.id

以上是关于在延迟作业中获取已创建作业的ID的主要内容,如果未能解决你的问题,请参考以下文章

如何在角度4中创建路由延迟时间?

使用延迟作业发送电子邮件时报告错误

显示使用延迟作业一段时间后运行的方法

将块传递给延迟作业

检查延迟的作业是不是在rails中运行

Sidekiq - 查看已完成的作业