第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Laravel 自定義隊(duì)列不尊重 retry_after

Laravel 自定義隊(duì)列不尊重 retry_after

PHP
桃花長(zhǎng)相依 2022-07-29 10:31:52
我在使用自定義 laravel 隊(duì)列連接/隊(duì)列時(shí)遇到了一些問(wèn)題。這個(gè)特定的連接/隊(duì)列用于可能需要 5 分鐘到 10 小時(shí)的作業(yè)(大型數(shù)據(jù)聚合和數(shù)據(jù)重建)我有一個(gè)主管 conf 定義為[program:laravel-worker-extended]process_name=%(program_name)s_%(process_num)02dcommand=php /var/www/artisan queue:work --queue=refreshQueue,rebuildQueue --sleep=3 --timeout=86400 --tries=2 --delay=360autostart=trueautorestart=trueuser=rootnumprocs=4redirect_stderr=truestdout_logfile=/var/www/storage/logs/queue-worker.log我有一個(gè)隊(duì)列連接定義為:        'refreshQueue' => [            'driver' => 'database',            'table' => 'jobs',            'queue' => 'refreshQueue',            'retry_after' => 420,   // Retry after 7 minutes        ],我通過(guò)以下命令使用命令將作業(yè)添加到隊(duì)列中:AggregateData::dispatch()->onConnection('refreshQueue')->onQueue('refreshQueue');構(gòu)造 DatabaseQueue 時(shí),retryAfter 定義為 420。但是這是我的工作日志:[2020-01-22 18:25:37] local.INFO: BEGINNING AGGREGATION  [2020-01-22 18:25:37] local.INFO: Aggregating data  [2020-01-22 18:27:08] local.INFO: BEGINNING AGGREGATION  [2020-01-22 18:27:08] local.ALERT: AGGREGATION FAILED: Aggregation in progress 為什么當(dāng)我明確告訴它在 420 之后重試時(shí),它會(huì)在 90 秒后繼續(xù)重試?我已經(jīng)重建了我的容器,重新啟動(dòng)了隊(duì)列,并完成了我可以調(diào)試的所有其他事情......然后等待一段時(shí)間,我得到了最終的日志輸出:[2020-01-22 18:25:37] local.INFO: BEGINNING AGGREGATION  [2020-01-22 18:25:37] local.INFO: Aggregating data  [2020-01-22 18:27:08] local.INFO: BEGINNING AGGREGATION  [2020-01-22 18:27:08] local.ALERT: AGGREGATION FAILED: Aggregation in progress  [2020-01-22 18:33:04] local.INFO: [COMPLETE] Aggregating data  [2020-01-22 18:33:04] local.INFO: Queue job finishedIlluminate\Queue\CallQueuedHandler@call我不太明白為什么隊(duì)列在 90 秒后繼續(xù)重試作業(yè)。我在這里做錯(cuò)了嗎?在此處編輯一些其他上下文:此方法in_progress在開(kāi)始時(shí)設(shè)置一個(gè)標(biāo)志,因此它不能在同一時(shí)間運(yùn)行兩次。日志可以解釋為:BEGINNING AGGREGATIONhandle():工作方法的第一行AGGREGATION FAILED: Aggregation in progress:failed()作業(yè)的方法通過(guò)異常處理失敗。這一行表明它再次嘗試了該作業(yè),并且遇到了設(shè)置為1已經(jīng)表示另一個(gè)作業(yè)正在處理的標(biāo)志。當(dāng)作業(yè)完成或遇到不同的異常(不是“進(jìn)行中”)時(shí),此標(biāo)志將重置為 0。Queue job finishedIlluminate\Queue\CallQueuedHandler@call我在服務(wù)提供者中添加了進(jìn)一步調(diào)試以偵聽(tīng)隊(duì)列完成事件。
查看完整描述

2 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

這可能與您正在使用的時(shí)間超時(shí)有關(guān)。從文檔

--timeout 值應(yīng)始終比您的 retry_after 配置值短幾秒鐘。這將確保處理給定作業(yè)的工作人員總是在重試作業(yè)之前被殺死。如果您的 --timeout 選項(xiàng)比您的 retry_after 配置值長(zhǎng),您的作業(yè)可能會(huì)被處理兩次。


查看完整回答
反對(duì) 回復(fù) 2022-07-29
?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

我已經(jīng)弄清楚了這里的問(wèn)題。在queue.php我定義一個(gè)連接 refreshQueue。但是,在我的主管 conf 中,我使用的是:

command=php /var/www/artisan queue:work --queue=refreshQueue,rebuildQueue --sleep=3 --timeout=86400 --tries=2 --delay=360

作為命令 ( --queue),命令應(yīng)該是:

command=php /var/www/artisan queue:work refreshQueue --sleep=3 --timeout=86400 --tries=2 --delay=360

注意缺少--queue連接有定義,而retry_after不是隊(duì)列本身。

這是關(guān)于連接與隊(duì)列差異的寶貴經(jīng)驗(yàn)。


查看完整回答
反對(duì) 回復(fù) 2022-07-29
  • 2 回答
  • 0 關(guān)注
  • 319 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)