如何在Django中每天一次在确切时间执行命令?

如何在Django中每天一次在确切时间执行命令?,第1张

如何在Django中每天一次在确切时间执行命令?

虽然您可以让django应用在系统上添加和删除cron作业,但另一种更像django式的方法是使用Celery。它是一个任务队列系统,可以同时运行同步任务和异步任务。

Celery的一项特定功能是计划任务:http : //packages.python.org/celery/userguide/periodic-
tasks.html

from datetime import timedeltaCELERYBEAT_SCHEDULE = {    "runs-every-30-seconds": {        "task": "tasks.add",        "schedule": timedelta(seconds=30),        "args": (16, 16)    },}

它们还具有周期任务的更细化版本,该版本复制了crontab的调度:

from celery.schedules import crontabCELERYBEAT_SCHEDULE = {    # Executes every Monday morning at 7:30 A.M    'every-monday-morning': {        'task': 'tasks.add',        'schedule': crontab(hour=7, minute=30, day_of_week=1),        'args': (16, 16),    },}

芹菜本身是独立的,但是有针对Django芹菜的版本

此解决方案的好处是您无需编辑和维护系统级的cron选项卡。此解决方案已高度集成到django中,用于此确切用途。

使用cron的另一个 巨大
好处就是Celery可以随您的系统扩展。如果使用的是基本系统crontab,则这些任务将位于承载该应用程序的服务器上。但是,如果您需要扩展站点并在5个Web应用程序节点上运行它怎么办?您将需要集中该crontab。如果您使用的是Celery,则有许多关于如何传输和存储任务的选项。它固有地是分布式的,并且可以同步到所有应用程序服务器。它是便携式的。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5617696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存