亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 異常隊列最大嘗試次數超出

Laravel 異常隊列最大嘗試次數超出

PHP
MMTTMM 2023-08-06 15:00:06
我創建了一個應用程序來向多個用戶發送電子郵件,但在處理大量收件人時遇到問題。錯誤出現在failed_jobs表格中Illuminate\Queue\MaxAttemptsExceededException:?App\Jobs\ESender?has?been?attempted?too?many?times?or?run?too?long.?The?job?may?have?previously?timed?out.?in?D:\EmailSender\vendor\laravel\framework\src\Illuminate\Queue\Worker.php:649這是payload在failed_jobs表中{"uuid":"ff988083-c1da-4d20-a2e3-c2a10e154c79","timeout":9000,"id":"j2Lz0Ro0bkJpqwxKWTxC3Tiii71iE6Cm","data":{"command":"O:16:\"App\\Jobs\\ESender\":13:{s:7:\"timeout\";i:9000;s:12:\"receiver_obj\";O:45:\"Illuminate\\Contracts\\Database\\ModelIdentifier\":4:{s:5:\"class\";s:12:\"App\\Receiver\";s:2:\"id\";i:6;s:9:\"relations\";a:0:{}s:10:\"connection\";s:5:\"mysql\";}s:16:\"sender_all_hosts\";O:45:\"Illuminate\\Contracts\\Database\\ModelIdentifier\":4:{s:5:\"class\";s:15:\"App\\SenderHosts\";s:2:\"id\";a:4:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;}s:9:\"relations\";a:0:{}s:10:\"connection\";s:5:\"mysql\";}s:11:\"message_obj\";O:45:\"Illuminate\\Contracts\\Database\\ModelIdentifier\":4:{s:5:\"class\";s:12:\"App\\Messages\";s:2:\"id\";i:36;s:9:\"relations\";a:0:{}s:10:\"connection\";s:5:\"mysql\";}s:7:\"counter\";i:1;s:3:\"job\";N;s:10:\"connection\";N;s:5:\"queue\";N;s:15:\"chainConnection\";N;s:10:\"chainQueue\";N;s:5:\"delay\";N;s:10:\"middleware\";a:0:{}s:7:\"chained\";a:0:{}}","commandName":"App\\Jobs\\ESender"},"displayName":"App\\Jobs\\ESender","timeoutAt":1594841911,"maxExceptions":null,"maxTries":null,"job":"Illuminate\\Queue\\CallQueuedHandler@call","delay":null,"attempts":1}
查看完整描述

4 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

您在作業中設置了 a?timeout,但此超時大于retry_after您在此配置中定義的值。

有一個明確的警告:

--timeout 值應始終比 retry_after 配置值至少短幾秒。這將確保處理給定作業的工作人員始終在重試作業之前被終止。如果您的 --timeout 選項比您的 retry_after 配置值長,您的作業可能會被處理兩次。

您可以為長時間運行的作業定義一個新連接,并在作業上設置此連接(分派到特定連接),而不是使用timeout.


查看完整回答
反對 回復 2023-08-06
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

如果需要就增加超時時間即可,但注意不要長時間占用服務器資源

php artisan queue:work --timeout=10000000


查看完整回答
反對 回復 2023-08-06
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

運行隊列工作程序的命令需要 --tries= 和 --timeout= 來設置隊列工作程序允許的輸出限制。

這可以確保您的命令不會超出您定義的工作人員的限制。

您可以使用作業屬性來實現超時或嘗試,如下所示。并使用隊列配置文件設置默認值。


查看完整回答
反對 回復 2023-08-06
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

跑步

php artisan config:clear
php artisan optimization:clear

重啟主管


查看完整回答
反對 回復 2023-08-06
  • 4 回答
  • 0 關注
  • 1022 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號