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