3

Amazon EC2 で一連の Python スクリプトを実行しようとしています。このヘルプガイドでは、Amazon SQS を使用してキューを管理することを提案しています。このガイドから、EC2 インスタンスを起動し、自分のコンピューターからジョブをキューに送信する方法は理解できましたが、Python スクリプトがサーバーからフェッチされた後に実行されるように EC2 インスタンスを設定する方法はわかりません。キューに入れ、結果を Amazon S3 に保存します。python スクリプトをフェッチして EC2 サーバーで実行し、結果を S3 に保存するにはどうすればよいですか?

4

2 に答える 2

5

上記のガイドでは、サンプル コードを含むgithub リポジトリへのリンクを見つけることができます。これはあなたの質問に答える実例です。それはよく文書化されており、読みやすいです。

つまり、pdf/tasks.pyソース コードをよく見てください。つまり、次のようなブートストラップ bash スクリプトを使用ec2.run_instancesして ec2 インスタンスを起動します。

  • でインスタンスを更新しますapt-get
  • ループ内でboto.connect_sqsSQS に接続し、タスクを取得するために使用します
  • タスクを実行します
  • boto.connect_s3()S3 への接続と結果のアップロードに使用
  • スクリプトの終了時にインスタンスをシャットダウンします。

アップデート

さらに、fromをCheckResponseQueueTask使用してメッセージを定期的にデキューし、それらを処理する良い例です。S3 へのアップロード結果を示すサンプル コードについては、ソース行 51 ~ 57 を参照してください。また、タスクの量がインスタンスの数を超えた場合の、キュー プロセッサを使用した新しいインスタンスの起動とブートストラップを示しています。214 ~ 244 行を参照してください。Celery.PeriodicTaskSQSBOOTSTRAP_SCRIPTCheckQueueLevelsTask

于 2013-10-26T21:21:11.987 に答える
2

そのための 1 つの方法は、AWS SQS をすぐにタスク ブローカーとして使用できる EC2 インスタンスで Celeryを実行することです。

Celery と AWS SQS の使用に関する情報は、http: //docs.celeryproject.org/en/latest/getting-started/brokers/sqs.htmlにあります。

Celery は、並行性と複数のワーカーもサポートしています。これは、1 つの AWS SQS キューをリッスンする Celery を実行する複数の EC2 インスタンスを持つことができ、タスクがインスタンス間で自動的に分散されることを意味します。

于 2013-10-31T12:54:53.303 に答える