我正在尝试在Amazon EC2上运行一组python脚本。此help guide建议使用Amazon SQS管理队列。从本指南中,我了解了如何启动EC2实例并从我的计算机将作业发送到队列,但我不明白如何设置EC2实例,以便在从中获取后运行python脚本队列然后将结果保存到Amazon S3。如何获取,在EC2服务器上运行,并将结果保存到python脚本的S3?
答案 0 :(得分:5)
在上述指南中,您可以找到包含示例代码的github repository链接。这是一个有效的例子,回答你的问题。它有很好的文档记录,易于阅读。
即,仔细查看pdf/tasks.py源代码。简而言之,它使用ec2.run_instances
使用引导程序bash脚本启动ec2实例:
apt-get
boto.connect_sqs
连接到SQS并获取任务boto.connect_s3()
连接到S3并上传结果<强>更新强>
此外,CheckResponseQueueTask
是使用来自Celery.PeriodicTask
的{{1}}来处理消息并将其处理的好消息。查看SQS
,源代码行51-57,以获取说明上传到S3的结果的示例代码。并且BOOTSTRAP_SCRIPT
说明了在任务数量超过实例数的情况下,使用队列处理器进行新实例启动和引导。第214-244行供参考。
答案 1 :(得分:2)
这样做的一种方法是在您的EC2实例上运行Celery,该实例能够将AWS SQS用作开箱即用的任务代理。
有关使用Celery和AWS SQS的信息,请访问: http://docs.celeryproject.org/en/latest/getting-started/brokers/sqs.html
Celery还支持并发和多个工作者。这意味着您可以让多个运行Celery的EC2实例监听一个AWS SQS队列,并且任务将自动在您的实例中自行分发。