django中设置定时任务

django中设置定时任务

在django中设置定时任务我们可以借用django-crontab这个第三包来实现

  • django-crontab只能在linux系统下使用
  • 安装: pip install django-crontab
  • 将django_crontab注册到install app中
  • 编写你的定时任务函数(我的是编写一个发送邮件的任务函数)
from django.core.mail import send_mail
from django.conf import settings
from django.template.loader import render_to_string
from task.models import Task
from django.contrib.auth.models import User

def send_task_email():
    user_list = User.objects.filter()
    for user in user_list:
        tasks = Task.objects.filter(status=False, user=user)
        if tasks:
            html_message = render_to_string('task/task.html', {'tasks': tasks, 'user': user})
            subject = '任务提醒'
            message = ''
            sender = settings.EMAIL_FROM
            receiver = [user.email]
            send_mail(subject, message, sender, receiver, html_message=html_message)

在settings中配置任务

CRONJOBS = [
    ('00 10 * * *', 'task.scheduled_task.send_task_email', '>>task.log'),
]
  • 任务队列是一个列表,里面的每个元祖元素都是一个任务对象,
  • 任务对象的的第一个参数为执行时间,00 10 * * *是每天10点执行
    python # crontab范例 # 每五分钟执行 */5 * * * * # 每小时执行 0 * * * * # 每天执行 0 0 * * * # 每周执行 0 0 * * 0 # 每月执行 0 0 1 * *
  • 第二个参数为任务函数的路径
  • 第三个为log的位置

操作任务

  • 添加任务python manage.py crontab add
  • 查看任务python manage.py crontab show
  • 删除任务python manage.py crontab remove

原文地址:https://www.cnblogs.com/ivy-blogs/p/11695551.html

时间: 2024-10-02 18:07:57

django中设置定时任务的相关文章

Django中通过定时任务触发页面静态化的方式

安装 pip install django-crontab 添加应用 INSTALLED_APPS = [ ... 'django_crontab', # 定时任务 ... ] 设置任务的定时时间 在配置文件中设置定时执行的时间 每个定时任务分为三部分定义: 任务时间 基本格式 : * * * * * 分 时 日 月 周 命令 M: 分钟(0-59).每分钟用*或者 */1表示 H:小时(0-23).(0表示0点) D:天(1-31). m: 月(1-12). d: 一星期内的天(0~6,0为星

django中运行定时任务脚本

需要使用到django_apscheduler模块,因此先安装: pip install django-apscheduler 然后在工程的settings.py文件中的INSTALLED_APPS模块加入: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messa

如何在django中设置用邮箱也可以登录?

首先在view.py中构建一个类集成ModelBackend,在这个类里重写authenticate,通过Q添加邮箱验证的方式. from django.contrib.auth.backends import ModelBackendfrom django.db.models import Q class CustomBackend(ModelBackend): def authenticate(self, username=None, password=None, **kwargs): tr

在django中实现定时任务

原文地址:https://www.cnblogs.com/jintian/p/11447259.html

Django中的csrf基础了解

简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功能有分为全局和局部. 全局: 中间件 django.middleware.csrf.CsrfViewMiddleware 局部: @csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件. @csrf_exempt,取消当前函数防跨站请求伪造功能,即便s

Django中使用Celery实现定时任务(用djcelery)

[TOC] 一.引言 Django是python语言下的一个比较热门的Web框架,越来越多的企业和开发者使用Django实现自己的Web服务器.在Web服务器开发过程中,有时候我们不仅仅是要实现Web服务器端和用户端的简单逻辑交互,还要实现一些定时任务.举出以下的例子: 定期删除或缓存Redis数据库的记录 为了追求更高的数据库访问性能,我把Redis作为MySql数据库的缓存.把常访问的数据放在Redis中,然后定时存储到Mysql中.并且把过期的Redis数据删掉.那么这个时候,就需要定时去

Django中Cookie和Session的基本配置以及设置

Cookie 1.获取Cookie: request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None) 参数: default: 默认值 salt: 加密盐 max_age: 后台控制过期时间 2.设置Cookie: rep = HttpResponse(...) 或 rep = render(request, ...) rep.set_cookie(key,valu

Django中mysql配置设置

settings文件中设置:你的数据库名称在设置之前先确保已经创建了这个数据库 DATABASES = { 'default':{ 'ENGINE':'django.db.backends.mysql', 'NAME':'books', #数据库名称 'USER':'root', #数据库用户名 'PASSWORD':'123456', # 数据库密码 'HOST':'', #数据库主机,留空默认为localhost 'PORT':'3306', #数据库端口 } } 之前 DATABASES设

Django 项目中设置缓存

一.配置文件settings.py中 # 设置django缓存存放位置为redis数据库,并设置一个默认(default)选项,在redis中(配置文件/etc/redis/redis.conf)开启了RDB持久化储存 # pip install django-redis, 然后在视图中可以通过 from django_redis import get_redis_connection 这个方法和redis数据库进行连接 CACHES = { "default": { "BA