【发布时间】:2013-08-13 10:57:37
【问题描述】:
我已经阅读了很多关于队列的内容,但我自己也很困惑。我只会记下我所知道的,如果我理解正确,请告诉我。
队列基本上可以帮助您完成请求-响应周期之外的事情。意思是,如果客户上传了一张图片,并且您想保存图片的缩略图版本,您不想让客户等待图像被修剪的时间,然后返回给他,您可以这样做请求-响应循环,通过队列。队列几乎就像传统的数据结构队列一样,是先进先出的。
这些队列的流行解决方案提供商是 celery、pyres 和 amazon sqs。
队列是如何工作的?
通常有一个守护进程正在运行,例如,如果有 celery,那么就有一个 celery 守护进程在运行,并继续对队列顶部的任何任务进行计算。 (希望我是对的)
另一个例子,有点复杂,请指正。
现在说我想自动化以下任务:
-
在 12 月 25 日给我的朋友发一封邮件。
-
祝朋友在 12 月 26 日生日快乐。
-
祝另一位朋友在 12 月 26 日生日快乐。
在这种情况下,我将执行以下操作:
-
创建一个条目,并在数据库中。
-
创建条目后,将该条目排队。
-
解雇一个工人,它将执行该任务。
现在有个疑问,第 3 步是否正确?
是否有一个长的投票工作人员,它将采取行动? 这是如何运作的?我很困惑。还是我需要有一个 cron 作业,正在运行,这将继续触发一个脚本 检查队列中是否有任何东西,在给定的时间内(以分钟为精度)如果是,则解雇工人。
当您查看 celery 的文档时,他们需要一个后端 - redis、mongodb、sqs 等。因此,如果我是对的,将会有一个连续的进程作为守护进程运行,并跟踪事物在队列中(redis,mongodb)并且应该执行。这是灰色地带。请帮忙。
感谢您的回答。
【问题讨论】:
标签: rabbitmq celery message-queue resque amazon-sqs