質問: Pythonでairbnbのサイトをスクレイピングしようとしています。 PCを閉じていても定期的に動くようにしたいので、スクレイピングの処理をクラウド上で、できれば並列化して行いたいと考えております。(スクレイピング自体のコードはできています) おすすめの方法などありましたら教えて頂けると有難いです。
回答: クラウド環境という制約の元、簡単にまとめてみました。 仮想サーバ(VPS、EC2、GCEなど)内で定期実行する方法 ============================== * cronを利用し、定期的にスクリプトを起動する + cronとはジョブを定期的に実行するデーモンで、分単位で実行タイミングを指定することができます。 + cron - ArchWiki * アプリケーションを常時起動しつつ、定期的に取得処理を動かす + Pythonだとscheduleというライブラリが便利です。しかし、この方式の場合アプリケーションが予定外の終了をした場合の対応が必要です。 + schedule — schedule 0.4.0 documentation これらの方式は伝統的であり、ドキュメントも多いですが、サーバを常時起動するコストや、サーバ自体の監視・メンテナンスコストが発生します。 そこで、近年は以下の方式がより主流になりつつあります。 FaaS系サービスを利用し、関数を定期実行してもらう方法 ============================ * AWS LambdaやGoogle Cloud Functionsで関数を登録し、cronのように定期実行することができます。この場合、並列化したい関数(以下関数A)と、並列化したい関数を呼び出す関数(以下関数B)を登録しておいて、関数Bを定期実行し、そこから別途関数Aを呼び出すような形式になるかと存じます。 + AWS Lambda (サーバーレスでコードを実行・自動管理) | AWS + Cloud Functions - イベント駆動型のサーバーレス コンピューティング | Cloud Functions | Google Cloud ただし、こちらの方式はローカルにデータを保存出来ないため、データ保存先を別途用意する必要があります。また、FaaSの流儀に従ったコードを書く必要もあります(関数名や、実行時間に制限がある)。 どちらを選ぶかは要件に合わせて選択してください。