bashスクリプトの一部としてscrapyを実行する方法はありますか?一定の時間だけ実行しますか? おそらく、X時間後にCtrl-C + Ctrl-Cをシミュレートすることによって?スクリプトでX時間の治療を実行していますか?
答えて
Scrapyは、指定された期間の後にクロールを停止するCLOSESPIDER_TIMEOUTオプションを提供します。
これはハードリミットではありません。既にダウンロードしているすべてのリクエストは処理されますが、スケジューラから新しいリクエストは取得されません。つまり、CLOSESPIDER_TIMEOUTはCtrl-CではなくCtrl-Cをエミュレートし、蜘蛛gracefulyを停止しようとします。スパイダーを殺すことは、例えば、エクスポートされたデータファイルは破損したままにします。
どのくらいの余分な時間が生き残るかは、ウェブサイトと再試行時に同時実行の設定&に依存します。デフォルトのDOWNLOAD_TIMEOUTは180秒です。リクエストは2回まで再試行できます。つまり、最悪の場合に各リクエストが10分以上かかることがあります。 CONCURRENT_REQUESTSはデフォルトで16であるため、ダウンローダーには最大16個のリクエストがありますが、クロールする内容に応じて並行してダウンロードできます。 AutotrottleまたはCONCURRENT_REQUESTS_PER_DOMAINオプションは、単一ドメインに対して並列に実行される要求の数を制限することがあります。
したがって、絶対的に最悪の場合(順次ダウンロードでは、すべての要求が応答不能になり、2回再試行されます)、スパイダーはデフォルト設定で約3時間ハングすることがあります。しかし、実際には、通常、この時間はずっと短く、数分です。 CLOSESPIDER_TIMEOUTに値を設定することができます。あなたのX時間よりも20分少なくしてください。そして、シャットダウン時間が超長ければ、ハード・タイムアウトを実装し、スパイダーを殺すために追加のスーパーバイザー(@lufteが提案するGNUタイムアウトのようなもの)を使用してください。
- 1. スクリプトからの治療を実行中 - ハング
- 2. バックグラウンドで治療を実行する(Ubuntu)
- 3. Pythonスクリプトの中から治療を実行中 - CSVエクスポータが動作しない
- 4. デジタルオーシャンサーバーを使用してDokkuで治療を実行する
- 5. スクリプトの治療から始める
- 6. 治療プロジェクトが実行されていません
- 7. スケジュールでの治療
- 8. 雲での治療
- 9. サブプロセスを使って治療を実行する
- 10. NodeJs:所定の時間スクリプトを実行していますか?
- 11. 治療のベストプラクティス
- 12. 治療のアップロードファイル
- 13. ヤフーファイナンスはウェブ治療を禁止していますか?
- 14. 治療:ノンブロッキング・ポーズ
- 15. 治療法convert_image
- 16. 治療 - マニュアルログイン
- 17. 治療アイテムパイプラインprocess_itemの並列または順次実行
- 18. JavaScriptスクリプトからデータを抽出するための治療
- 19. スパイダーリンクを辿っていない - 治療
- 20. 複数のスパイダーを治療中に実行する
- 21. アイテムジェネレータとしての治療を使用
- 22. OS X 10.6での治療のインストールに関する問題
- 23. 治療中のループ
- 24. S3サポートの治療
- 25. 治療:別のURL
- 26. 私の最初の治療プロジェクトを実行中のエラー
- 27. vs2017でデバッグの治療
- 28. JSONレスポンスでの治療
- 29. 治療は3重スラッシュのURLを保存しています///
- 30. 同時治療薬はGILの薬ですか?