2016-08-24 56 views
1

我们有一个python脚本,在用户在Web表单中输入一些数据后启动。整个脚本需要10-20分钟才能完成。如果用户愿意,用户可以在技术上在10秒内启动其中的10个。如果发生这种情况,我们将同时运行10个相同的Python脚本,并且由于脚本正在处理的各种事情而导致对方失败。如何实现在单独的python进程之间共享的队列系统?

编写一个总体排队系统的方法是什么,以便这些脚本知道彼此并等待排队执行?我们是通常写一个脚本的人,但需要为Web表单配置这个不断排队系统......可悲的是,我们不是开发人员或具有这样的背景。

我们也可以通过不同的方式来设计一般的解决方案。我们一起去了这个黑客行为。我们从来没有成立过程/服务经纪人/工作人员,但这可能有意义吗?

人们通常如何做这些东西?

回答

2

欢迎来到散布您的计算的狂野世界!

实现自己的排队系统(甚至在Python中)可能会导致一个受伤的世界。一个非常流行的企业级和开源消息队列应用程序是RabbitMQ。他们有一个great starter tutorial,讲述了您可以开始配置它的方式及其使用示例。

另外还有一个名为Celery的Python任务队列库,因此在引擎盖下使用了RabbitMQ。它的重点和性能稍微小一点,但提供易用性和更快的启动时间作为折衷。有一件事情,它没有权衡是RabbitMQs 一致性当你深入排队和分布式系统,你将学习是非常重要的。有入门文档可以发现here

链接

+0

感谢您的信息马特。我们的一个实习生让我感到惊讶,并实施了[rqueue](https://devcenter.heroku.com/articles/python-rq)来解决这个问题。出于好奇,我甚至问过这个问题吗?我会稍后检查你的链接。 – Thisisstackoverflow

+0

你的问题下降了适量的关键字/面包屑,以找出你想要的东西。不幸的是,“网页上的东西需要几分钟时间并且是垃圾邮件”这个问题并不罕见;把排队系统放在它后面,而“工人”是一个常见的解决方案。 – Matt