2009-09-20 90 views
2

我正在Python中构建一个类似于TwitPic的移动照片共享网站,并且一直在探索各种队列来处理图像处理。我研究过RabbitMQ和ActiveMQ,但我认为我的使用案例有更好的解决方案。我正在寻找一些更轻量级的东西。我愿意接受任何建议。哪个队列最合适?

回答

2

你可以编写一个使用python的内置multiprocessing库和它的Queue的守护进程。

你所要做的就是建立一个工作人员池,让他们等待来自队列的工作。您的主流程可以将新作业转储到队列中,并且您可以轻松前往。

+0

我同意,只要确保任务排序代码不会被异常杀死,并停止整个过程 – Szundi 2009-09-20 01:54:55

+0

是的,包装一切都尝试:除了:block和** log **发生的任何异常,但允许该过程继续。 – Fragsworth 2009-09-20 01:58:04

+0

他正在谈论分布式消息队列。 – 2009-09-20 01:59:36

0

您正在考虑单机架构还是一群机器?将映像转发到同一台计算机或不同计算机上的可用工作进程并无太大差别,特别是在使用TCP套接字的情况下。了解哪些工作人员可用,如果有必要,产生更多的资源并且有资源可用,如果工人崩溃等,具有故障安全机制,逐渐使问题更加复杂。

这可能与使用httplib将图像推送到运行Apache或扭曲的私有服务器以及cgi应用程序集合一样简单。当您添加另一台服务器时,请求将在其中循环。

1

Gearman很好,它可以选择性地允许您同步在多个工作人员上执行的多个作业。

我在一些大量应用程序中成功使用beanstalkd

后者更适合异步作业,前者为您提供更大的灵活性,当您想阻止作业执行时。