美文网首页WEB前端
Django 定时任务:简单实现+详细讲解

Django 定时任务:简单实现+详细讲解

作者: 煮茶忘放糖 | 来源:发表于2017-12-30 14:13 被阅读277次

    文 / 秦未

    实现Django定时任务的方法(插件)很多,复杂却功能完备的有: Django-celery。

    但今天我们使用Django-crontab,选择它的原因在于配置简单,使用方便。

    废话不多说,使用步骤:

    1. 安装配置

    pip install django-crontab
    

    再在settings.py中添加app:

    INSTALLED_APPS = (
           ...
           'django_crontab',
       )
    

    如果最后提示缺少什么模块,就自行pip安装。

    2. 创建定时任务

    在app内新建py文件,文件名称随意。

    例如我们在名为blog的app下新建了一个core.py文件。

    内容:

    # 项目名称/blog/core.py
    
    def task():
       #要执行的任务函数
    

    然后在 settings.py中增加:

    # 最简单配置
    CRONJOBS = [
        # 表示每天2:01执行
        ('01 2 * * *', 'blog.core.task')
    ]
    

    第一个参数(表示时间):

    前5个字段分别表示:

    • 分钟:0-59
    • 小时:1-23
    • 日期:1-31
    • 月份:1-12
    • 星期:0-6(0表示周日)

    一些特殊符号:
    *: 表示任何时刻
    ,: 表示分割
    -:表示一个段,如第二端里: 1-5,就表示1到5点
    /n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.

    第二个参数(表示路径):

    格式:app名称/文件名/函数名

    如果想生成日志,那就再加一个字符串类型的参数:'>> path/name.log', path路径,name文件名。'>>'表示追加写入,'>'表示覆盖写入。

    提示:如果你有多个定时任务,以逗号隔开,都放入CORJOBS中即可。

    3. 启动任务

    以上都完成后,需要执行

    python manage.py crontab add
    

    将任务添加并生效

    显示当前的定时任务

    python manage.py crontab show
    

    删除所有定时任务

    python manage.py crontab remove
    

    重启django服务

    执行(可能不需要,因为自己并没有用,也正常使用了。)

    python manage.py corntab -e
    

    4. 问题

    4.1 Django低级版本可以使用吗?

    答:版本太低请安装0.6.0版本

    pip install django-crontab==0.6.0
    

    4.2 支持Windows吗?

    答:不支持

    4.3 使用add命令时,遇到"bad command"/"errors in cronfile"报错。

    答:第一个参数错误,请仔细检查。

    ...

    想要了解所有配置,请阅读作者英文文档:https://github.com/kraiz/django-crontab

    ---End---

    相关文章

      网友评论

        本文标题:Django 定时任务:简单实现+详细讲解

        本文链接:https://www.haomeiwen.com/subject/zzpggxtx.html