我有一个很重的函数(做了很多计算),它为我的 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] 删除。
我来说两句