django 项目中使用 crontab 定时任务

django 项目中使用 crontab 定时任务django 项目中使用 crontab 定时任务 django-crontab 在 linux 上的使用 需求:django 项目中需添加定时任务,定时执行某个函数或者自定义的命令等 使用步骤 1.

django 项目中使用 crontab 定时任务

django-crontab 在 linux 上的使用
需求:django 项目中需添加定时任务,定时执行某个函数或者自定义的命令等

使用步骤

1. 安装 django-crontab 模块

  pip install django-crontab

2. 在 settings.py 文件中注册

INSTALLED_APPS = [    ...    'django_crontab',]

3. 在 settings.py 文件中配置

​-  定时执行自定义函数

CRONJOBS = [    # ('*/1 * * * *''app名.定时函数所在的py文件名.定时函数名''>> 输出文件路径和名称')    # 每1分钟执行restart_pm2函数,并将执行中的返回的内容全部打印到crontab.log文件中    ('*/1 * * * *''app1.tasks.restart_pm2''>>/home/wangzhipeng/myproject/crontab.log'),]

​-  定时执行 django 中自定义的命令

CRONJOBS = [# 每1分钟执行django的自定义命令,并将执行中的返回的内容全部打印到crontab.log文件中    ('*/1 * * * *''django.core.management.call_command', ['mycommand1'], {"param""mycommand1_test"}, '>>/home/wangzhipeng/myproject/crontab.log'),    ('*/1 * * * *''django.core.management.call_command', ['mycommand2'], {"param""mycommand2_test"}, '>>/home/wangzhipeng/myproject/crontab.log')]

格式:

参数 1:定时 例如*/1 * * * * 表示每隔 1 分钟执行

参数 2:方法的 python 模块路径,如果执行 django-admin 命令,则写 django.core.management.call_command

参数 3:方法的位置参数列表(默认值:[]),如果执行 django-admin 命令,则填写所需执行的命令

参数 4:方法的关键字参数的 dict(默认值:{})

参数 5:执行 log 存放位置(即重定向到文件,默认:‘’)

4. 创建定时执行的函数和命令

  • ​4.1 在对应的应用下创建定时执行的函数(apps/app1/task.py 文件中,添加 is_restart_pm2()函数)
  • def restart_pm2():    from time import strftime, localtime    print(strftime("%Y-%m-%d %H:%M:%S"localtime()), end='')    print("执行了restart_pm2函数")​
    
  • 4.2 在对应的应用下创建定时执行的函数(创建 apps/app1/management/commands 文件,注意 management 与 commands 要引入 initpy 作为模块使用中,在 commands 下创建自定义的命令,如下图所示:)
  • ​   在这里插入图片描述
    • 4.3 测试自定义 django 命令
      输入:python3 manage.py mycommand1 -p 123
      输出:2019-05-10 15:10:59: mycommand1传入的参数为 123
      结果:ok,可以使用
  • 5. 执行结果展示

  • 添加并开启定时任务:python3 manage.py crontab add  结果如下:
  • root@33cdac35c0ad:/app# python manage.py crontab addno crontab for root  adding cronjob: (5d331dfc4040c6e1521c0da67a38fe90) -> ('* 8 * * *''users.tasks.weather_to_wechat''>>/root/python-weather/crontab.log')
    
  • python 环境查看定时任务:python3 manage.py crontab show  结果如下:
  • root@33cdac35c0ad:/app# python manage.py crontab showCurrently active jobs in crontab:5d331dfc4040c6e1521c0da67a38fe90 -> ('* 8 * * *''users.tasks.weather_to_wechat''>>/root/python-weather/crontab.log')
    
  • 在 linux 中(root 下)查看定时 i 任务: crontab -l  结果如下:
  • root@33cdac35c0ad:/app# crontab -l* 8 * * * /usr/local/bin/python /app/manage.py crontab run 5d331dfc4040c6e1521c0da67a38fe90 >>/root/python-weather/crontab.log # django-cronjobs for weather​
    

目前是打包镜像的形式,​linux 模式类似

**​
**

  1. 操作命令

查看系统中已有的定时任务:

python manage.py crontab show

添加和修改定时任务:

python manage.py crontab add

删除定时任务:

python manage.py crontab remove

额外说明:

django-crontab 只能基于 linux 环境中才能使用(本文都是在 ubuntu 的 root 下实现的,普通用户下有小问题,未解决)

提前查看 linux 上 cron 服务是否有启动

查看 status:service cron status

开启服务: service cron start

查看 cron 日志:cat /var/log/cron.log

如果找不到日志文件,说明系统默认 cron 日志没有打开,可以参考下面给的文章

linux 中查看定时任务:crontab -l

linux 中添加定时任务:crontab -e

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/36695.html

(0)
上一篇 2023-11-15
下一篇 2023-11-15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注