在本地计算机上设置EC2实例作为Celery Worker
跟我之前的问题这里类似,我正在尝试设置多个亚马逊EC2实例来进行一些多进程处理。我在考虑用Celery来管理这些工作进程。有没有人成功在EC2实例上用本地电脑作为主机运行Celery?
有没有人能给一些好的建议、教程或者意见之类的,可能会有帮助?我之前在Django中用过Celery做一些简单的异步处理,但那都是在同一台机器上,没做过这么大规模的。
另外,大部分处理都是基于文件的(也就是说,读取和写入文件)……你觉得用Celery把文件内容进行序列化后传输会更好(大多数文件是1-2kb的文本),还是在EC2实例之间同步文件系统,然后让工作进程返回结果(通常是0.5kb的文本)更好呢?
1 个回答
0
我用过亚马逊的SQS来管理任务,配合亚马逊的EC2服务。这是一个非常灵活的解决方案。根据我的经验,Boto是管理亚马逊服务的最佳库。
如果你需要存储大量的小文件,可以使用MongoDB的GridFS,它可以让你存储几GB的本地文件。我用MongoDB处理这类任务时表现得非常好。唯一的问题是,MongoDB在32位架构上限制很大。亚马逊有微型实例和下一个价格较高的较大实例,后者支持64位。微型实例在CPU和内存上非常有限,如果不满足你的需求,就需要设置较大的实例,这可能会花费很多。
在我的任务中,微型实例每天能顺利读写最多10GB的数据。
另外,请看看Spot实例。它的价格大约是按需实例的三分之一,适合用来做一些后台处理。