我应该使用纯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控制芹菜。运行芹菜任务,取消任务,检查任务的状态/进度可以在django中完成。

  • 使用芹菜运行的定期任务非常简单,只需从 django 注册任务即可运行芹菜工人,瞧,您就完成了。无需弄乱 crontab 或后台进程。

  • 芹菜非常容易设置和运行。如果您已经介绍了芹菜,您可能已经知道了。

缺点

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

  • 还有一个是芹菜工人本身会占用一些内存,但如果您在服务器上,这不会成为问题,本地内存消耗对您来说似乎很高。

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

相关内容

  • 没有找到相关文章