問題タブ [horizon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
laravel - Laravel 5.7 タスク キュー (Horizon) が取得されない、タスクを実行しようとする、または失敗する
同じ API で複数のタスクを実行する必要があります。API はレート制限されているため、ロックアウトされないように呼び出し回数 (100 x 120 秒) を調整する必要があります。各ロックは 30 分間続き、チーム全体をフリーズさせ、恐ろしい問題を引き起こす可能性があります。
システムは Laravel 上に構築されており、キューを使用してこの API 呼び出しを行っています。必要な最初の作業は、システムが毎晩 1 回、API に対して約 950 回の呼び出しを行い、API の内容をデータベースと同期することです。2 番目と 3 番目のジョブはオンデマンドで、ユーザーが必要とするたびに、それぞれ約 100 から 200 の呼び出しを実行する必要がある場合があります。(複数のユーザーが 1 日中同時にこれを必要とする可能性があるため、キューの列によりレート制限を超えないようにする必要があります)。
スーパーバイザーで 1 人のワーカーだけですべてをセットアップしましたが、問題なく動作しているように見えました。しかし、その後、すべてのジョブをオンデマンドで呼び出しているわけではないことに気付きました (2 番目と 3 番目の種類)。ユーザーが 8 つのことに対してアクションを実行する必要がある場合、それらはキュー ラインに表示されますが、2 つまたは 3 つしか実行されません。残りは取得されます。拾ったり、走らせたり、失敗したりしませんでした。これは、ワーカーの数を 8 に増やすことである程度修正されました。これを行った後、ユーザーが 8 つのアクションを実行する必要がある場合は機能しましたが、毎晩 900 のタスクが失敗し始めました。
また、8 つのジョブで機能することにも気付きましたが、ユーザーに最大 50 のタスクを移動させると、これも失敗します。
/etc/supervisor/conf.d のスーパーバイザー構成:
私たちのキュー設定:
私たちの地平線設定:
database.php の redis 構成:
毎晩の仕事:
オンデマンド ジョブの例:
Horizon タスク: (保留中のタスクは実行もピックアップも何も行われません) タスクはキューに表示されますが、実行も失敗もしないようです。
php - エラーが発生せず、望遠鏡に表示されないLaravelジョブ
次のような電子メールジョブをセットアップしました。
dispatch(new NewUserEmail($newUser->email, $newUser->username));
私のジョブファイルは次のようになります。
ただし、意図的にメールファイルのスペルを間違えました。NewUsedfr
これはNewUser
、例外をトリガーするためです。
しかし、ジョブを実行すると、Horizon でジョブが失敗としてマークされずに終了することがわかります。望遠鏡で見ると、ログタブに例外やエラーが表示されません..
そのため、手動で storage/logs フォルダーを調べたところ、次の行が表示されました。
Class 'App\Jobs\NewUsedfr' not found {"exception":"[object]
では、なぜ私の仕事は地平線で失敗せず、望遠鏡で上記のエラーが表示されないのですか? 望遠鏡がストレージ/ログフォルダーからのエラーを表示しないのは少し奇妙に思えます