数据库队列连接在生产中不起作用

时间:2021-03-28 05:37:25

标签: laravel cron laravel-queue

我的带有 cron-job 的 Laravel (7.15) 应用程序包含两个在特定时间段每天执行的命令。

php artisan report:generate
php artisan report:send-mail

report:generate 命令执行一次,而 report:send-mail 每 5 分钟执行一次。

直到昨天,生产中的 QUEUE_CONNECTIONsync,并且运行良好。但问题是我的报告包含大型且复杂的查询,每个查询需要大约 2-3 小时(表格也有数百万条数据)。

所以我决定将我的报告移到可以并行生成的 queued-jobs 中。所以我把我的 QUEUE_CONNECTION 改成了 database。并在生产中运行以下命令。

php artisan config:cache
php artisan cache:clear
php artisan queue:flush
php artisan queue:retart

queue:work 已经在我的服务器上运行,不幸的是我无权关闭和打开它(仅限网络团队授权)。

我已经运行了 queue:table & queue:failed-table 之前在生产数据库中生成了 jobs & failed_jobs 表。

现在我获得了每个报告的工作条目,但它没有尝试,attempts0 表中显示 jobs。似乎队列在用于发送报告邮件时无法生成报告。为了测试,我通过命令手动尝试 queue:work 并在生产中成功生成了一封邮件。

这是怎么回事,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

当你评论说使用了 supervisord,重启 supervisord。

相关问题