
cron を使用して scrapy 経由でデプロイされたスパイダーをスケジュールしています。各スパイダーは 1 行です。現在、スパイダーが 100 個あるため、計画と管理が非常に難しくなります。大量のジョブを管理するには、どのような方法が推奨されますか? ジョブの重複など、ジョブを一時停止/再開するために必要な潜在的なメンテナンス時間を検討します。
答え1
cronを使用しない
ニーズが複雑な場合は、複雑なスケジュール(複数のサーバーに分散)を実行するように設計され、トリガー、ジョブの依存関係、エラー処理、再試行、再試行の監視などをサポートする、より高度な製品の使用を検討してください。業界用語では「エンタープライズ」です。ジョブスケジューリングおよび/または「ワークロードの自動化」。
答え2
タスクの実行頻度ではなく、いつ実行するかをスケジュールする必要がある場合は、cron を使い続けることができます。タスクのクロス実行を回避するには、cron でタスクを何らかのキュー (redis、rabbitmq、sql データベース) に追加する短いスクリプトだけを実行し、別のスクリプトでそのキューを使用してワークロードを順番に、または制限された同時実行で実行します。もちろん、これにより、他のワークロードの実行をブロックするスタックしたワークロードの処理方法など、別のカテゴリの問題が発生します :)