如果它的基础知识很抱歉,但我在互联网上没有找到任何比较这两种技术的答案。我应该如何决定何时使用哪个,因为两者都可以用来安排和处理定期任务。
这是一篇文章所说的:
Django celery :
Jobs are essential part of any application that does some processing for you in the background. If your job is real time Django application celery can be used.
Django-cronjobs:
django-cronjobs can be used to schedule periodic_task which is a valid job. django-cronjobs is a simple Django app that runs registered cron jobs via a management command.
谁能解释一下我什么时候应该选择哪个和为什么?我还需要知道为什么在分布式计算时使用 celery 以及为什么不使用 cron 作业
最佳答案
这两件事可以用于同一个目标(后台执行)。但是,如果您要明智地选择,您应该真正了解它们实际上是完全不同的东西 .
这就是我希望当我还是个菜鸟时有人告诉我的(而不是我今天达到的新手级别:))。
定时任务
cron 作业的概念是我们希望命令/进程按某个时间表执行。此外,我们希望该进程接收 x,y,z 参数,使用 a,b,c 环境变量和用户 id 123 运行。
一些 cron 系统可能会促进一些额外的功能,例如:
在大多数情况下,cron 系统应该是 哑 :“此时只需运行此命令,谢谢!”。
celery
celery 的概念要复杂得多。它适用于任务、任务链和和弦、错误处理以及(在大多数情况下)工作结果的收集。它有一个工作队列(或许多队列)和一个工作人员(或许多)。当一个任务(实际上只是描述请求工作的消息)进入队列时,它会在那里等待,直到有工作人员可以处理它。就像 DMV 的一名或多名员工为满屋等候的顾客提供服务一样。
此外,Celery 可以促进分布式工作。这有点像(如果我可以稍微折磨一下这个类比)——DMV 办公室之间的区别,每个员工共享相同的电话、计算机、复印机等,而 DMV 办公室的员工拥有专用资源并且永远不会被其他员工阻止。
用于网络应用程序的 Celery
在 Web 应用程序中,当一些 Web 访问导致要做的事情应该在与 Web 浏览器的对话之外处理时,通常会使用 Celery。例如:
使用 Celery 作为 cron
当您将 Celery 用作“cron 系统”时,您真正要做的就是说:“嘿,有人可以按照 Y 计划生成 X 类型的工作吗”。创建了一个持续运行的进程,该进程大部分时间处于休眠状态,偶尔醒来,以按照您请求的时间表将一些工作注入(inject)队列。
通常,您要求为您执行此操作的“嘿某人”是:celery beat and beat 从数据库中的某个位置或您的设置文件中获取您想要的时间表。
关于django - Django celery 和 Django cron-jobs 的用法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59052768/