簡體   English   中英

Amazon SQS,Boto和Python:在Amazon EC2上獲取和運行腳本

[英]Amazon SQS, Boto, and Python: Fetching and Running a Script on Amazon EC2

我想在Amazon EC2上運行一組python腳本。 幫助指南建議使用Amazon SQS管理隊列。 從本指南中,我了解了如何啟動EC2實例並從我的計算機將作業發送到隊列,但我不明白如何設置EC2實例,以便在從中獲取后運行python腳本隊列然后將結果保存到Amazon S3。 如何獲取,在EC2服務器上運行,並將結果保存到python腳本的S3?

在上述指南中,您可以找到帶有示例代碼的github存儲庫的鏈接。 這是一個有效的例子,回答你的問題。 它有很好的文檔記錄,易於閱讀。

即,仔細查看pdf / tasks.py源代碼。 簡而言之,它使用ec2.run_instances通過bootstrap bash腳本啟動ec2實例:

  • 使用apt-get更新實例
  • 在循環中使用boto.connect_sqs連接到SQS並獲取任務
  • 執行任務
  • 使用boto.connect_s3()連接到S3並上傳結果
  • 腳本完成時關閉實例。

UPDATE

此外, CheckResponseQueueTask是一個很好的例子,它使用來自SQS Celery.PeriodicTask來處理它們並對它們進行處理。 查看BOOTSTRAP_SCRIPT ,源代碼行51-57,以獲取說明上傳到S3的結果的示例代碼。 CheckQueueLevelsTask說明了在任務數量超過實例數的情況下,使用隊列處理器進行新實例啟動和引導。 第214-244行供參考。

這樣做的一種方法是在您的EC2實例上運行Celery ,它可以將AWS SQS作為任務代理開箱即用。

有關使用Celery和AWS SQS的信息,請訪問: http//docs.celeryproject.org/en/latest/getting-started/brokers/sqs.html

Celery還支持並發和多個工作者。 這意味着您可以讓多個運行Celery的EC2實例監聽一個AWS SQS隊列,並且任務將自動在您的實例之間分配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM