Django项目定时任务(django-crontab)

Django项目使用定时任务(django-crontab)

关于django-crontab定时任务,首先他是操作系统层面的定时任务,一旦激活启动,只要操作系统在运行,则定时任务会一直在后台运行。
定时任务可以使用在页面静态化技术上,以便按照我们想要的时间间隔自动生成页面
下面以Django项目页面静态化技术应用定时任务来进行举例:
首先安装

pip install django-crontab

添加应用

# settings.py
INSTALLED_APPS = [
    ...
    # 定时任务
    'django_crontab',  
]

设置任务的定时开启时间

每个定时任务分为三部分定义:

  • 任务时间
  基本格式 :

    * * * * *

    分 时 日 月 周      命令
    M: 分钟(0-59)。每分钟用*或者 */1表示
    H:小时(0-23)。(0表示0点)
    D:天(1-31)。
    m: 月(1-12)。
    d: 一星期内的天(0~60为星期天)。
第一个星号代表分钟,第二个代表小时,第三个代表天,第四个代表月,第五个代表一星期内的第几天

注意:'1 * * * *' 代表每个小时的第一分钟执行定时任务,即,每小时才会更新一次。
我们如果要设置每分钟执行一次定时任务,则需要使用以下
'*/1 * * * *'
  • 任务方法

  • 任务日志

首页的定时任务设置如下:

# 在settings.py文件中
# 定时任务
CRONJOBS = [
    # 每1分钟生成一次首页静态文件
    ('*/1 * * * *', 'contents.generate_index.generate_index_html', '>> ' + os.path.join(os.path.dirname(BASE_DIR), 'logs/crontab.log'))
]
  • 第一部分代表了定时任务的执行间隔,第二部分代表定时任务要执行的函数,第三部分代表发生错误时了写入的日志文件路径和日志文件

解决中文字符问题
在定时任务中,如果出现非英文字符,会出现字符异常错误
可以通过在 settings.py 中添加如下命令来解决:

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

开启定时任务
我们设置好定时任务之后, 需要把定时任务添加到操作系统中才能够启动:

添加定时任务到系统中

python manage.py crontab add

执行以上代码会出现如下弹窗,点击 好,如果不小心点击错了,则要关机重启再来执行添加定时任务。
在这里插入图片描述

显示已经激活的定时任务

python manage.py crontab show

移除定时任务(当不使用的时候记得移除,否则会一直存在)

python manage.py crontab remove

补充:由于该定时任务是操作系统层面的定时任务,仅在linux操作系统和mac系统下可以执行,windows系统则不可用!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值