我試圖在Amazon EC2上運行一組python腳本。此help guide建議使用Amazon SQS來管理隊列。在本指南中,我瞭解如何引導EC2實例並從我的計算機將作業發送到隊列,但我不知道如何設置EC2實例,以便在從其中獲取EC2實例後運行Python腳本排隊,然後將結果保存到Amazon S3。我如何獲取,在EC2服務器上運行,並將結果保存到Python腳本的S3中?Amazon SQS,Boto和Python:在Amazon EC2上獲取和運行腳本
3
A
回答
5
在上述指南中,您可以找到帶有示例代碼的github repository的鏈接。這是一個工作的例子,回答你的問題。它有據可查,易於閱讀。
也就是說,仔細看pdf/tasks.py的源代碼。總之,它使用ec2.run_instances
來啓動EC2實例與自舉bash腳本:
-
在一個循環中與
- 更新實例使用
boto.connect_sqs
連接到SQS和取任務 - 執行任務
- 使用
boto.connect_s3()
連接到S3並上載結果 - 腳本結束時關閉實例。
apt-get
UPDATE
此外,CheckResponseQueueTask
與從SQS
並處理它們pereodic出隊的消息的一個很好的例子。查看BOOTSTRAP_SCRIPT
,源代碼行51-57,查看示例代碼,說明結果上傳到S3。並且CheckQueueLevelsTask
說明在任務數量超過實例數的情況下,使用隊列處理器引導和引導新實例。 214-244行供參考。
2
這樣做的一種方法是在您的EC2實例上運行Celery,該實例可以使用AWS SQS作爲開箱即用的任務代理。
使用芹菜和AWS SQS信息可以在這裏找到: http://docs.celeryproject.org/en/latest/getting-started/brokers/sqs.html
芹菜還支持併發和多工人。這意味着您可以讓多個運行Celery的EC2實例監聽一個AWS SQS隊列,並且這些任務將自動分配到您的實例中。
相關問題
- 1. Ruby1.9和Amazon SQS?
- 2. 無法在Amazon EC2上運行python selenium webdriver腳本
- 3. Amazon SNS和Amazon SQS有什麼區別?
- 4. 誰使用Boto和Python創建了Amazon EC2實例?
- 5. RedHat和Amazon EC2上的Node.js
- 6. Amazon SQS隊列和CodeIgniter
- 7. 運行二郎項目在Amazon EC2上
- 8. 在Amazon EC2上使用EBS運行MySQL
- 9. 在amazon EC2上運行websocket服務器
- 10. Tomcat,mod_cluster和Amazon EC2?
- 11. Amazon SQS Python/boto:如何發送帶重音字符的郵件?
- 12. 如何讓Amazon SQS PHP接收器腳本永久運行?
- 13. Amazon ECS和Amazon EC2有什麼區別?
- 14. Tomcat在Amazon EC2上
- 15. 來自EC2實例的Amazon SQS區域
- 16. 在Amazon EC2上使用HDFS和Apache Spark
- 17. Python Boto創建的雲端初始化#include腳本沒有在EC2上運行
- 18. 在EC2上運行腳本啓動和停止
- 19. 使用boto從Amazon SQS讀取原始消息
- 20. node.js的在Amazon EC2上使用Ubuntu 8.04安裝在Amazon EC2上
- 21. 你可以用Amazon SQS運行cronjob嗎?
- 22. 在Java中使用Amazon SQS和SNS
- 23. 如何在python中使用dict與boto和amazon ec2構建多維數組?
- 24. 如何在amazon ec2 webservice上運行python代碼?
- 25. 錯誤G-WAN和Amazon EC2
- 26. Python Amazon Boto S3正在運行的錯誤
- 27. Amazon EC2實例和本地RabbitMQ?
- 28. 如何使用Python中的boto庫在Amazon SQS中接收計數?
- 29. 我可以在EC2上運行Amazon RDS副本嗎?
- 30. 如何在Amazon EC2中運行Jar?
你的更新是非常有用的alko。我相信我現在可以理解你鏈接到的這個腳本如何引導實例,從隊列中檢索任務並保存到S3,但新引導的實例執行的任務在哪裏?它是160-173行,只是將文件傳輸到特定的S3存儲桶?如果我想在保存到S3之前添加一個額外的任務來執行,比如說從隊列中取出x並將f(x)的結果保存到S3中,我將如何將它添加到代碼中? – Michael
您可能希望將鏈接中的代碼複製到您的答案中並添加註釋,以便在鏈接死亡後您的答案不會消失。再次感謝您的幫助。 – Michael
在新實例上執行的所有代碼都以'BOOTSTRAP_SCRIPT'寫入。 **這是'bash'腳本!**魔法(數據處理)在'subprocess.Popen'上發生,位於第99-104行。看到這個腳本在循環(75)中用'python -c'語法(21)運行,並且當連續10次沒有數據被延遲10秒時獲取,它結束(81),系統關閉125)。參考制動器中的行數。 – alko