虽然您可以让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,则有许多关于如何传输和存储任务的选项。它固有地是分布式的,并且可以同步到所有应用程序服务器。它是便携式的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)