Django集成django-crontab实现定时任务详解

周末不加班
周末不加班
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍如何在Django项目中利用django-crontab库执行定时任务。通过安装配置、定义自定义函数或管理命令、设置CRONJOBS参数,并执行add、show、remove等命令,实现如每日读取邮件等自动化操作。需注意路径配置及Linux环境兼容性。

Django集成django-crontab实现定时任务详解

需求

每日需请求一封邮件,并读取该邮件内容。

虽然Linux系统自带crontab工具,但鉴于项目基于Django开发,探索从Django内部实现定时任务的方法更为合适。

经简单搜索,发现实现此类功能的方法确实不少。

考虑到Celery插件的学习曲线较陡,对于此类轻量级需求,决定采用django-crontab库来解决。

安装与基础配置

安装


pip install django-crontab

将应用名称添加到settings.py配置文件中。


INSTALLED_APPS = (
    'django_crontab',
    ...
  )
 

完成上述步骤后,基础配置基本无误。

创建定时任务

接下来创建定时任务主要有两种方式:一是执行自定义的manage.py命令,二是执行自定义Python函数。

本文选择的方法是定义自定义函数。

首先,在原有的app目录中(与view.py同级)新建一个cron.py文件(文件名可任意,也可置于view.py中,但新建文件更便于管理)。


def test():
  print 123
  #你要执行的任务函数
 

在settings.py文件的末尾增加相关配置。


CRONJOBS = [
  ('*/5 * * * *', 'appname.cron.test','>>/home/test.log')
]
 

若存在多个定时任务,可将它们全部放入CRONJOBS列表中。

需要说明的是,'*/5 * * *' 遵循标准的crontab语法格式。

'appname.cron.test' 中,appname即为在settings.py中注册的应用名称。由于cron.py文件位于该应用下,必须使用正确的应用名,否则无法解析路径。cron指代任务文件名,test则是具体执行的函数名。

>>/home/test.log 表示将输出信息追加写入指定文件。注意'>>'代表追加写入,而'>'代表覆盖写入。

启动与管理命令

启动

完成以上配置后,需执行特定命令。


python manage.py crontab add 

将任务添加至系统并使其生效。

查看当前已配置的定时任务列表。


python manage.py crontab show

删除所有已添加的定时任务。


python manage.py crontab remove

重启Django服务以应用更改。

执行与注意事项

执行


corntab -e 

此时应能在系统中看到已创建的定时任务。

归根结底,django-crontab插件是对Linux底层crontab功能的封装调用,该方法在Windows系统上的有效性尚不确定。

建议读者多做尝试,参考GitHub上的官方文档,这对深入理解和使用非常有帮助。

务必确保所有路径配置正确,否则错误排查将较为困难。

本文介绍基于个人理解,难免有疏忽遗漏之处,若能对大家有所帮助便是幸事。

参考链接

GitHub仓库地址:https://github.com/kraiz/django-crontab

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表