我应该使用纯 Python 代码还是 Celery?姜戈。

汉斯弗朗茨

我有一个很重的函数(做了很多计算),它为我的 Django 项目中的每个用户输出一个单独的数字。这个数字会随着时间的推移而略有变化,因此为了最大限度地减少服务器负载,我想每天运行一次该函数,保存输出并只引用输出。我知道这些东西通常会被处理,Celery但是这个包需要很多站点包和额外的模块,所以我想写一个简单的函数,比如:

x0 = #last.time function was called
x1 = datetime.now
if x0-x1 > 1 day:
  def whatever():
    ....
    x0 = datetime.now
    return ....

我喜欢保持我的代码干净,而不是安装不是真正需要的包,所以我想知道“仅仅”使用 Python 是否有任何缺点,或者当我使用Celery. 该任务不需要是异步的,所以我不在乎。是否有明确的“用例”何时应该使用芹菜,何时不使用?是否有性能损失/收益?

我希望有人能正确解释这一点。

阿尔皮特·索兰基

芹菜是一个明显的赢家,但我想用利弊来解释这一点。

优点

  • 您可以非常轻松地从 Django 控制 celery。运行 celery 任务、取消任务、检查任务的状态/进度都可以在 django 中完成。

  • 使用 celery 运行的周期性任务非常简单,只需从 django run celery worker 注册任务,瞧你就完成了。无需处理 crontab 或后台进程。

  • Celery 很容易安装和运行。如果您已经了解了芹菜的介绍,您可能已经知道了。

缺点

  • 缺点之一是您需要至少有一个结果后端与 redis、rabbitmq 或任何其他运行 celery 的结果后端以进行排队。虽然 RabbitMq 不是很重,但您需要安装一次。

  • 还有一个是 celery worker 本身需要一些内存,但如果你在服务器上,这不会成为问题,本地内存消耗对你来说可能很高。

我建议使用 celery,因为它可以让你更好地控制你的任务,而不是一个简单的后台进程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python None比较:我应该使用“ is”还是==?

如何按票数排序我的选票?姜戈

如何使用订单列出帖子?- 在姜戈

使用 GET 数据从表单中获取数据。姜戈

姜戈。签入模板或使用额外的字段?

我应该使用Python 32位还是Python 64位

我应该为每个页面创建一个应用程序吗?(姜戈)

python-我应该使用静态方法还是顶层函数

Python2:我应该使用Pickle还是cPickle?

Python - 我应该使用线程还是进程进行网络活动?

我应该使用Python还是C作为语言解释器?

我应该使用SceneBuilder还是在代码中实现布局?

获取“facebook 代码”以从服务器端获取长期访问令牌。姜戈

我应该创建一个模型来包含另一个模型实例吗?(姜戈)

姜戈。不断在我的图像上出现 404,不知道我是否设置了正确的路径

我如何将图像从数据库显示到页面。姜戈

当我尝试登录用户时出现登录错误。姜戈

姜戈。如何防止其他用戶編輯和刪除我的列表?

姜戈。我如何在模型中做一些数学运算

我可以通过 CBV 创建用户实例而不是先创建表单吗?(姜戈)

如何在 div 的 html 背景 url 中使用产品图片?。姜戈

有没有更好的方法来使用 Q 制作这个查询集?姜戈

如何在 for 循环中的输入元素上使用 Javascript 函数。姜戈

使用 DestroyAPIView 和 Javascript 删除购物车项目时出错。(姜戈)

Tkinter 应该在一个单独的 python 文件中还是可以在相同的代码中?

姜戈翻译

姜戈。外键

姜戈 | 即使我在views.py中使用request.user,我也想将页面显示给“AnonymousUser”

我如何通过python代码检测我的操作系统是32位还是64位