GBD*_*BDA 6 django cron celery django-celery django-cron
我很抱歉,如果它的基础知识,但我没有在互联网上找到任何比较这两种技术的答案。我应该如何决定何时使用哪个,因为两者都可以用于安排和处理周期性任务。
这是一篇文章所说的:
姜戈芹菜:
作业是在后台为您进行某些处理的任何应用程序的重要组成部分。如果您的工作是实时的,则可以使用 Django 应用程序 celery。
Django-cronjobs :
django-cronjobs 可用于调度 period_task,这是一个有效的作业。django-cronjobs 是一个简单的 Django 应用程序,它通过管理命令运行注册的 cron 作业。
谁能解释一下我应该何时选择哪一个和为什么之间的区别?另外我需要知道为什么在分布式计算时使用芹菜,为什么不使用 cron 作业
Bil*_*eke 13
这两件事可以用于同一个目标(后台执行)。但是,如果您要明智地选择,您应该真正了解它们实际上是完全不同的东西。
这是我希望在我还是菜鸟时有人告诉我的事情(而不是我今天达到的新手水平:))。
定时任务
cron 作业的概念是我们希望某个命令/进程按某个时间表执行。此外,我们希望该进程接收 x,y,z 参数,使用 a,b,c 环境变量运行,并以用户 id 123 身份运行。
一些 cron 系统可能会提供一些额外的功能,例如:
在大多数情况下,cron 系统是愚蠢的:“此时只需运行此命令,谢谢!”。
芹菜
Celery的概念要复杂得多。它适用于任务、任务链和和弦、错误处理以及(在大多数情况下)工作结果的收集。它有一个工作队列(或许多队列)和一个工作人员(或许多)。当一个任务(实际上只是一条描述请求工作的消息)进入队列时,它会在那里等待,直到有工作人员可以处理它。与 DMV 的一名或多名员工为满是等候客户的房间提供服务的方式大致相同。
此外,Celery 可以促进分布式工作。这有点像(如果我可以稍微扭曲一下类比) - 每个工人共享相同的电话,计算机,复印机等的 DMV 办公室与工人拥有专用资源且永远不会被其他工人阻止的 DMV 办公室之间的区别。
用于 Web 应用程序的 Celery
在 Web 应用程序中,当一些 Web 访问导致需要在与 Web 浏览器的对话之外处理的事情时,通常会使用 Celery。例如:
网络用户只是做了一些应该导致发送电子邮件的事情。为了发送电子邮件,您的 Web 服务器需要联系邮件服务器。这可能需要时间,服务器可能很忙,等等 - 我们不能让网络用户只是等待,而我们这样做时他们的浏览器上什么也看不到。嗯,你可以,但它不会可靠地工作。因此,我们将电子邮件发送作为队列中的一项工作。这样,它就可以“随时”发生,并且 Web 服务器可以恢复与浏览器的通信。
用户刚刚提交了信用卡作为付款。您将需要联系卡处理器,但这可能需要几秒钟的时间。您甚至可能需要多次联系他们(例如,他们现在真的很忙)。同样,您不希望用户的 Web 浏览器只是呆呆地坐着,也不希望 Web 服务器进程或执行线程被捆绑。相反,您使用 Celery 创建作业,告诉浏览器在几秒钟后检查(或使用“网络套接字”),然后您的网络服务器继续前进并与其他网络用户交谈。当浏览器稍后回来检查时,您会查找任务 id 并从 celery 中找出它是否完成以及结果是什么(卡被拒绝等)。
使用 Celery 作为 cron
当您将 Celery 用作“cron 系统”时,您真正要做的就是说:“嘿,有人可以按 Y 计划生成 X 类型的工作吗”。创建了一个连续运行的进程,该进程大部分时间都处于休眠状态,偶尔会醒来,以按照您请求的时间表向队列中注入一些工作。
通常,您要求为您执行此操作的“嘿某人”是:celery beat and beat从数据库中的某个位置或从您的设置文件中获取您想要的时间表。
| 归档时间: |
|
| 查看次数: |
2487 次 |
| 最近记录: |