我应该使用普通的Python代码还是Celery? Django的。

时间:2017-08-20 15:34:29

标签: python django celery

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

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

我喜欢保持我的代码干净,而不是安装不是真正需要的包,所以我想知道是否有任何缺点“只是”使用Python或任何收益,当我用{{1}时这样做}。任务不需要是异步的,所以我不关心这一点。 当Celery应该被使用时,是否有明确的“用例”?是否存在性能损失/收益?

我希望有人可以正确解释。

1 个答案:

答案 0 :(得分:1)

芹菜是一个明显的赢家,但我想用优点和缺点来解释。

<强>赞成

  • 你可以很容易地控制Django的芹菜。运行芹菜任务,取消任务,检查任务的状态/进度可以在django内完成。

  • 用芹菜运行的一个周期性任务非常简单,只需从django注册任务,然后运行芹菜工人,瞧你完成了。无需乱搞crontab或后台进程。

  • 芹菜很容易安装和运行。你可能已经知道如果你已经介绍了芹菜。

<强>缺点

  • 其中一个缺点是,您需要至少有一个带有redis,rabbitmq或任何其他与芹菜一起运行的结果后端用于排队。虽然RabbitMq不是很重,但你需要安装一次。

  • 还有一点是,芹菜工作者本身需要一些记忆,但如果你在服务器上则不会出现问题,本地记忆消耗对你来说可能很高。

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