时间:2021-05-22
今天介绍在django中使用定时任务的两种方式。
方式一: APScheduler
1)安装:
pip install apscheduler2)使用:
from apscheduler.scheduler import Schedulerfrom django.core.cache import cache# 实例化sched = Scheduler() # 每30秒执行一次@sched.interval_schedule(seconds=30)def sched_test(): """ 测试-定时将随机数保存到redis中 :return: """ seed = "123456789" sa = [] for i in range(4): sa.append(random.choice(seed)) code = ''.join(sa) cache.set("test_"+code, code)3)启动定时任务
# 启动定时任务
sched.start()
方式二: django-crontab
1) 安装:
pip install django-crontab2) 添加配置到INSTALL_APPS中
INSTALLED_APPS = ('django_crontab',)3) 编写定时函数:
在django的app中新建一个test_crontab.py文件,把需要定时执行的代码放进去
import random from django.core.cache import cache def test(): """ 测试-定时将随机数保存到redis中 :return: """ seed = "123456789" sa = [] for i in range(4): sa.append(random.choice(seed)) code = ''.join(sa) cache.set("test_"+code, code)4)编写定时命令
Django为项目中每一个应用下的management/commands目录中名字没有以下划线开始的Python模块都注册了一个manage.py命令, 自定义一个命令如下: 必须定义一个继承自BaseCommand的Command类, 并实现handle方法。
编写appname/management/commands/test.py文件
import random from django.core.management.base import BaseCommandfrom django.core.cache import cache class Command(BaseCommand): """ 自定义命令 """ def handle(self, *args, **options): """ 自定义命令 :return: """ seed = "123456789" sa = [] for i in range(4): sa.append(random.choice(seed)) code = ''.join(sa) cache.set("test_"+code, code)定义完成后,执行python manage.py test, 会执行handle()函数
5) 在settings.py中增加配置
# 运行定时函数CRONJOBS = [ ('*/1 * * * *', 'appname.test_crontab.test','>>/home/python/test_crontab.log')] # 运行定时命令CRONJOBS = [ ('*/1 * * * *', 'django.core.management.call_command', ['test'], {}, '>> /home/python/test.log'),]上面主要有3个参数,分别表示: 定时任务执行时间(间隔), 待执行定时任务, 将定时任务的信息追加到文件中
对于熟悉linux中定时任务crontab的同学可能对上面第一个参数的语法很亲切。上面表示每隔1分钟执行一次代码。
linux中的定时任务crontab的语法如下:
* * * * * command分钟(0-59) 小时(0-23) 每个月的哪一天(1-31) 月份(1-12) 周几(0-6) shell脚本或者命令例子:
0 6 * * * commands >> /tmp/test.log # 每天早上6点执行, 并将信息追加到test.log中0 */2 * * * commands # 每隔2小时执行一次有兴趣的小伙伴可以深入研究下linux的crontab定时任务。
6) 添加并启动定时任务
python manage.py crontab add其它命令:
python manage.py crontab show: 显示当前的定时任务python manage.py crontab remove: 删除所有定时任务今天的定时任务就说到这里,有错误之处,欢迎交流指正!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
起步在《分布式任务队列Celery使用说明》中介绍了在Python中使用Celery来实验异步任务和定时任务功能。本文介绍如何在Django中使用Celery。
记录下Spring自带的定时任务用法。spring中使用定时任务基于xml配置文件使用定时任务首先配置spring开启定时任务
定时任务在项目中经常会使用到,本文主要根据博主自己使用定时的经验分如下几点介绍定时任务:1、Quartz定时任务简介及Spring配置Quartz定时任务2、S
今天打算在自己的Django应用中添加一个定时任务来定时执行一些定期检查的功能,因此想到了使用django-crontab插件可以满足我的需求,下面就是这个插件
大家在使用宝塔面板时都可能会遇到需要使用定时任务的功能,在其进行操作网站程式时,例如文件备份、木马查杀,释放内存等都会用到定时任务,而用好定时任务功能可以使你工