欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

django项目中使用crontab定时任务

程序员文章站 2022-05-20 14:11:26
...

 

使用pip 安装 django  我使用的是django 1.11.11 版本

pip install django==1.11.11

创建django项目  

django-admin startproject project-name

创建django应用

python3 manage.py startapp crontabapp

使用pip安装django-crontab

pip install django-crontab

注册定时任务的django应用 在django settings 文件中

'crontabapp',
'django_crontab'

在刚才创建的crontab应用的views.py 文件中 编写 要定时执行的函数,(要定时执行的函数要写到应用中,写到其他非应用文件夹,会找不到这个函数,也就执行不了

编写定时任务 


CRONJOBS = [

    ('1 1 * * *', "crontabapp.views.generedaydata",'>> /home/python/kolsite/kolsite/logs/daydata.log'),
    ('1 1 * * */1', "crontabapp.views.genereweekdata",'>> /home/python/kolsite/kolsite/logs/weekdata.log'),
    ('1 1 1 */1 *', "crontabapp.views.generemonthdata",'>> /home/python/kolsite/kolsite/logs/monthdata.log'),
]

crontab 命令简单介绍

* * * * * 分 时 日 月 周  需要定时的任务  重定向到日志文件

*/1 和 * 都是表示 每个 1(时、分、日、月、周)运行 一个
*/3 * * * * 表示 每隔三分钟 执行一个
1 * * * * 表示 每一小时中的第一分钟 运行 一次
1 2 * * *  表示 每天的2点1分 运行一次
以此类推 

启动django后

添加定时任务

python3 manage.py crontab add

查看定时任务

python manage.py crontab show

移除定时任务

python3 manage.py crontab remove

记住这三个命令就可以了


linux下解决中文报错问题(貌似我之前没加 也没报错  /抠鼻)

django 的 settings.py下加上这句

# 解决crontab中文问题
CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'

一般比较容易出错的几点:

1、没有把定时任务写在应用下,写在其他非应用文件夹下,比如我第一次就把定时函数写在了script文件夹下,然而这个并不是应用。死活没有定时效果

2、重定向符号后面 要加空格 (linux命令 重定向符号后面 加空格 载加路径 ) 

django项目中使用crontab定时任务

3、定时任务是个函数,而不是脚本或者文件,定时任务只需要在应用文件夹下的某个文件下编写一个函数。(如下图)

django项目中使用crontab定时任务

完!