如果你在使用Django框架开发web项目时,需要设置定时任务或让用户手动在页面上设置定时任务,那么这篇文章可能会帮助到你。
概述
在Django中实现定时任务功能大概有以下三种方法:

Celery框架

定时任务是分布式任务的一种特殊类型的任务。Django的分布式主要由Celery框架实现,这是python开发的分布式任务队列。由于它本身不支持消息存储服务,所以需要第三方消息服务来传递任务,一般使用Redis。
优点:
Celery侧重于实时操作,可用于生产系统每天处理数以百万计的任务,可用于大型项目。可在分布的机器、进程、线程上执行任务调度。
缺点:
配置和使用较为复杂,需要Redis数据库和多个python第三方库。

django-crontab

只需要下载一个 django-crontab 包就可以使用cron表达式在Django框架中设置定时任务。本人对这种方法了解不多,不过这种方法好像不支持windows系统,功能也相对简单。

django-apscheduler

配置简单、功能齐全、使用灵活、支持windows和linux,适合中小型项目。
使用方法
django-apscheduler中相关的概念和python的定时任务框架apscheduler中的概念是一样的,有感兴趣的同学可以自行查阅。
(本文使用 django + mysql 架构)

安装模块

pip install django-apscheduler 复制代码

配置

先在settings.py中配置好数据库信息(略).在INSTALLED_APPS中加入django-apscheduler应用:INSTALLED_APPS = [ ... 'django_apscheduler', ... ]执行迁移python manage.py migrate去数据库中看一看,生成了两个表格,大部分都顾名思义。