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命令 重定向符号后面 加空格 载加路径 )
3、定时任务是个函数,而不是脚本或者文件,定时任务只需要在应用文件夹下的某个文件下编写一个函数。(如下图)
完!