我正在尝试在Amazon EC2上运行一组Python脚本。这篇帮助指南建议使用Amazon SQS来管理队列。从该指南中,我了解到如何启动EC2实例并从我的计算机向队列发送作业,但我不明白如何设置EC2实例,使其在从队列中获取Python脚本后运行该脚本,然后将结果保存到Amazon S3。如何获取、在EC2服务器上运行并将Python脚本的结果保存到S3?
ec2.run_instances
启动带有引导Bash脚本的EC2实例,该脚本执行以下操作:
apt-get
更新实例boto.connect_sqs
连接SQS并获取任务boto.connect_s3()
连接S3并上传结果CheckResponseQueueTask
是使用Celery.PeriodicTask
从SQS
周期性出队消息并处理它们的好例子。请参阅BOOTSTRAP_SCRIPT
,第51-57行源代码,以获取演示结果上传到S3的示例代码。而CheckQueueLevelsTask
则说明了在任务数量超过实例数量的情况下,使用队列处理器启动新实例和引导。请参考第214-244行。
BOOTSTRAP_SCRIPT
编写的。它是bash
脚本!魔法(数据处理)发生在第99-104行的subprocess.Popen
中。请注意,此脚本在循环中使用python -c
语法(21)运行,并且当在10秒延迟后连续10次未获取到数据时,它将结束(81),并关闭系统(125)。参考括号中的行号。 - alkouser_data=startup
参数传递给boto.ec2.run_instances
函数来运行的。事实上,我之前并不知道这个功能,但发现它非常有用 :) - alkoBOOTSTRAP_SCRIPT
中之前定义的任何函数显然也可以在脚本中调用,该脚本在EC2实例上运行。仍需要逐步处理整个脚本并修改它以符合我的目的,但这终于有意义了!奖励已发放。 - Michael