Python开启定时任务的两种方法

前言

前段时间刚刚一个项目中有一个需求就是定时去触发一个任务,但是年代久远,并没有记住当时学习的用法,在完成任务的时候,走了不少的弯路,现在把在网上爬楼学到的分享给大家。

1,Django中开启定时任务

  • Django中会在配置中帮助我们很快的开启定时任务
# 添加定时任务
CRONJOBS = [
  ('*/3 * * * *',"需要调用的方法路径(点语法拼接)"),
]
# 解决中文乱码的问题
CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'
  • 上面开启的是每三分钟开启一次我们指定的任务
  • 前面必须是五个* 分别代表的是分 时 日 月 星期 ,具体需求具体设置

2,手动开启系统定时任务

  • 在这里我想吐槽一下mac的设置,让我设置了很久,我以为开启了,但是并没有开启,需要自己手动的去创建一个定时任务的文件才能执行
  • 在unix系统中设置定时任务相对而言比较简单,我这里只是演示Python的文件
    – 注意如果运用上了虚拟环境那么这个就要特别声明了
1,export EDITOR=vim
2、保存好后重新载入配置:
source .bash_profile
3、重新执行创建任务命令:
创建crontab文件:sudo touch /etc/crontab 
编写自己的计划任务:crontab -e
4、然后查看是否创建成功:
crontab -l

# 按天添加日志文件
0 12 * * * python  文件绝对路径>> "/Users/name/$(datewen +"\%Y-\%m-\%d").log" 2>&1
月
0 12 * * * Python 文件绝对路径>> "/Users/name/$(date +"\%Y-\%m").log" 2>&1
周
0 12 * * * python  文件绝对路径 >> "/Users/name/$(date +"\%Y-W\%W").log" 2>&1
小时
* * * * *  python 文件绝对路劲 >> "/Users/name/$(date +"\%Y-\%m-\%d_\%H").log" 2>&1
  • 这里只是最简单的python 主环境下运行我们编写的脚本同事定向输出我们的日志文件

& 两者的神奇结合

我们在运行Django的时候需要依赖他的配置环境,但是如果我们写了一个外部的接口,就需要手动去添加环境的配置,那么问题来了,开发是一个环境,生产又是另外一个环境,我们不能上线了还来修改我们的配置文件,相当的麻烦,我们就需要Django的脚手架文件manage.py来帮助我们完成环境的设置

  • 第一步,很重要
export DJANGO_SETTINGS_MODULE=api.settings.development
设置我们的Djangp的环境,后面也可以直接编写进shell文件中
export DJANGO_SETTINGS_MODULE=api.settings.development
cd 项目的目录
python manage.py shell
这样我们就进入了ipython的命令行
from  xxx import xxx
我们就可以进行测试了
  • 问题来了,我们需要编写脚本一键完成程序的运行但是这个命令行怎么编写shell脚本文件
  • 1,修改命令的操作
# 上面我们利用了manage.py文件进行了操作
我们把所有的命令放在一行用  ;  隔开就能直接运行了
  • 2,编写sh 和py 文件
- py
把之前的from xxx import xxx 写在py文件中
在shell文件中
python manage.py shell  < 刚刚编写的文件路径

关于虚拟环境的设置

  • 之前我有写过python的虚拟环境的设置
  • 我们如果直接输入workon xxx shell 会找不到我们设置的虚拟环境,下面就是我所实践总结出来的方法

1

我们把bash_profile中设置虚拟环境的那几行粘贴出来,放在shell文件中

2

在我们写workon xxx之前
source ~/.bash_profile

3

网上还有其他比我这个更加高级的方法,但是对于我来说,还需要在学习才能写出更加简洁优秀的代码

每天都要为进入华为而加油!!!

你可能感兴趣的:(python,linux)