为什么 delayed_job 不断尝试在 Docker 上更新 table 而不执行作业?

Why does delayed_job constantly try to udpate table on Dokku without executing job?

我正在尝试实现从一个应用程序的 api 到另一个应用程序的 Webhook 的一端。在发送应用程序中,延迟的工作(DJ)按预期完美运行。但是,在接收应用程序中,它似乎无法正常工作。我不确定这个问题,因为我无法让它不删除任何 failed/completed 作业。我查看了与 dokku 和 DJ 有关的每个答案的感觉。

我已尝试删除对 Procfile 和 DOKKU_SCALE 文件中的工作进程进行缩放的调用,然后进行部署。然后读取这些调用并重新部署。全部没有变化。

我试过用 Delayed::Job.destroy_all 删除所有 DJ,但没有效果。它表明没有什么可以删除的。另外,Delayed::Job.all returns []

我也尝试过多次重启应用程序,但都没有成功。

我有一个初始值设定项:

# config/intializers/delayed_job.rb

Delayed::Worker.destroy_failed_jobs = false
Delayed::Worker.max_attempts = 3

以及 ProfileDOKKU_SCALE

# Procfile
web: bundle exec rails s
release: bundle exec rails db:migrate
worker: bundle exec rails jobs:work

# DOKKU_SCALE
web=1
worker=1

这在本地非常有效。我找不到关于为什么它不能在 Dokku 上工作的断开连接。

这是似乎循环的日志输出:

感谢您提供的任何帮助。

日志中的数据库查询是 DJ 工作人员尝试执行工作的尝试。 尝试停止 worker 并查看作业是否在 Delayed::Job.

中开始堆积

确保:

  • app 和 worker 正在连接到同一个数据库
  • 本应使作业入队的事务因错误而未回滚。

原来不断尝试更新是DJ的一个特点。它内置于轮询数据库以查找 table 中的条目。显然,问题是将发送应用程序的 IP 地址列入白名单。如果它自己的 IP 地址不在白名单中,它不允许后台请求通过