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

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

LARAVEL:重新排隊工作是個壞主意嗎?

LARAVEL:重新排隊工作是個壞主意嗎?

PHP
拉丁的傳說 2022-07-29 17:03:48
我想知道重新排隊 laravel 工作是不是一個壞主意。我有一個場景,一旦他們將 facebook 帳戶集成到我的應(yīng)用程序中,我需要從 facebook 中提取用戶帖子。我想提取 {x} 天的歷史數(shù)據(jù)。facebook api 像任何其他 api 一樣限制每分鐘有 api 請求。我跟蹤請求標頭,一旦達到速率限制,我將這些信息保存在數(shù)據(jù)庫中,并且對于每個重新隊列,我檢查我是否有資格調(diào)用 facebook api這是更好的可視化的代碼片段<?phpnamespace App\Jobs;class FacebookData implements ShouldQueue{    /**     * The number of seconds the job can run before timing out.     *     * @var int     */    public $timeout = 120;    public $userid;    public function __construct($id)    {       $this->userid=$id;    }     public function handle()     {        if($fbhelper->canPullData())        {          $res=$fbhelper->getData($user->id);          if($res['code']==429)           {           $fbhelper->storeRetryAfter($res);           self::dispatch($user->id);           }        }     }}上面的代碼片段是一個粗略的想法。這是一個好主意嗎?我發(fā)布這個問題的原因是self::dispatch($user->id);看起來像一個遞歸,它會嘗試直到$fbhelper->canPullData()返回 true。這可能需要 6 分鐘。我擔心我的應(yīng)用程序會發(fā)生任何影響。提前致謝
查看完整描述

1 回答

?
開心每一天1111

TA貢獻1836條經(jīng)驗 獲得超13個贊

重試工作不是一個壞主意,它只是內(nèi)置到工作設(shè)計中。Laravel 對此進行了重試,認為作業(yè)可以進行不可靠的操作。


作為我一直在處理的項目中的一個示例,我們正在使用的外部 API 每發(fā)送 100 個請求就有 1-5 個 http 500 錯誤。這是您由 的內(nèi)置重試功能處理的Laravel。


從Laravel5.4 開始,您可以像這樣在類中設(shè)置它。這將完全按照您的意愿進行,而無需定義邏輯。最后,為了達到重試限制,您可以定義一個名為 retryAfter() 的函數(shù),它指定何時重試作業(yè)。


class FacebookData {

    public $tries = 5;


    public function retryAfter() {

        //wait 6 minutes

        return 360;

    }

}

如果你想保持你的邏輯只重試 429 錯誤,我會使用它的逆來刪除作業(yè),如果它不是 429 的話。


if ($res['code'] !== 429) {

    $this->delete();

}


查看完整回答
反對 回復 2022-07-29
  • 1 回答
  • 0 關(guān)注
  • 105 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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