- 前言
- 一、安装后的setting配置
- 静态资源配置
- templates配置
- static(注意最后的逗号,数据类型是元组)
- 二、有关于ORM
- 表的迁移
- ORM模型类的创建
- 基本
- 对象(数据库字段)
- 参数(字段类型以及外键)
- 三、celery+redis实现django定时任务
- 部分启动命令
- 文件配置
- 依赖包版本
- 文件目录
- setting配置
- celery配置文件(setting同级目录)
- project >init.py(主目录下的init文件)
- 在创建的app里面添加tasks.py文件
前言
用到django和vue
提示:以下是本篇文章正文内容,下面案例可供参考
一、安装后的setting配置 静态资源配置 templates配置 static(注意最后的逗号,数据类型是元组)STATICFILES_DIRS = ( os.path.join(base_DIR, "static"), )
欧克,这样基本配置就好了
二、有关于ORM 表的迁移生成表结构
python manage.py makemigrations app01
迁移
python manage.py migrate app01ORM模型类的创建 基本 对象(数据库字段)
- 自增长:
- AutoField(一般用做id,无需用户自己添加)
- 不够用就用BigAutoField
- int类型:
- IntegerField
- BigIntegerField
- 二进制字段:
- :BinaryField
- 布尔类型:
- :BooleanField
- NullBooleanField 允许为空
- 整形:
- 五个字节正数 : PositiveSmallIntegerField
- 六个字节的正负数 : SmallIntegerField
- 十个字节的正数 : PositiveIntegerField
- 十个字节 :IntegerField
- 二十个字节 : BigIntegerField
- 字符串类型:
- 需要指定字符串最大长度 : CharField
- 不需要指定(多长都行):TextField
- 时间类型:
- 年月日 :DateField
- 年月日时分秒 : DateTimeField
- 一段时间 : DurationField
- 浮点数:
- 不用指定小数点后几位 : FloatField
- 需要指定 :DecimalField
- 邮箱:
- EmailField
- 图片
- ImageField
- 一对多外键
- 参数要写上附表的类名 : ForeignKey
- 必须要加on_delelte参数
- 多对多
- 参数要写上附表的类名: ManyToManyField
等等…
参数(字段类型以及外键)- 所有字段都有的
- 1.更改字段名:db_colum=” “
- 2.设置主键:primary_key=True,默认为False
- 3.给字段设置别名(备注):verbose_name=” “
- 4.字段的唯一键属性:unique=True,设置之后,这个字段的没一条记录的每个值是唯一的
- 5.允许字段为空:null=True(数据库中字段可以为空),blank=True(网页 - 表单提交内容可以为空),切记不可以将null设置为Fasle的同时还把blank设 - 置为True。会报错的。
- 6.给字段建立索引:db_index=True
- 7.在表单中显示说明:help_text=” “
- 8.字段值不允许更改:editable=False,默认是True,可以更改。
- 时间和字符串类型
- CharField 类型
- 设置字符串的长度 : max_length
- DateField 类型
- unique_for_date=True:这个字段的时间必须唯一
- auto_now=True:对这条记录内容更新的时间
- auto_now_add=True:插入这条记录的时间
- max_digits=6, decimal_places=2:前者表示整数和小数总共多少数,后者表示小数点的位数
- CharField 类型
- 关系型字段
- 设置外键管理字段(该字段添加在附表,pimary指定的是主表字段)to_field=‘sect_id’
redis启动
redis-server.exe redis.windows.conf
低版本celery启动worker
celery -A Orm_Mysql worker -l info # Orm_Mysql 是项目名称
高版本
celery -A RepliceProject worker -l info -P eventlet
celery启动beat(发送任务)
celery -A Orm_Mysql beat -l info文件配置 依赖包版本
有两个选择
这一个直接运行worker和beat,没事
python 3.6 celery==5.0.5 django==3.1.4 django-celery-beat==2.2.0 redis==4.1.0
这里因为安装的celery版本有点高,不支持Windows,所以使用eventlet启动,发送任务时一样的
celery==5.2.3 Django==3.2.10 django-celery-beat==2.2.1 eventlet==0.33.0文件目录 setting配置
# 配置celery CELERY_BROKER_URL = 'redis://localhost:6379/0' # Broker配置,使用Redis作为消息中间件 CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' # BACKEND配置,这里使用redis CELERY_RESULT_SERIALIZER = 'json' # 结果序列化方案celery配置文件(setting同级目录)
# 将下一个版本中更新的内容导入到当前版本中 from __future__ import absolute_import, unicode_literals import os from celery import Celery from datetime import timedelta from celery.schedules import crontab os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Orm_Mysql.settings') # 设置django环境 Orm_Mysql是project名称 app = Celery('Orm_Mysql') #还有这里 app.config_from_object('django.conf:settings', namespace='CELERY') # 使用CELERY_ 作为前缀,在settings中写配置 app.autodiscover_tasks() # 发现任务文件每个app下的task.py # 声明定时任务 app.conf.beat_schedule = { u'app01_tasks_add': { # 任务名,可以自定义 "task": "app01.tasks.add", # 任务函数 "schedule": timedelta(seconds=10), # 定时每10秒执行一次 # "args": (1, 3), # 传未定义的不定长参数 # 'kwargs': ({'name':'张三'}), # 传已定义的不定长参数 }, u'app01_tasks_mcn_name': { "task": "app01.tasks.mcn_name", "schedule": timedelta(seconds=15), # 定时每15秒执行一次 # "args": (), # 'kwargs': (), }, u'app01_tasks_mcn_gov': { "task": "app01.tasks.mcn_gov", "schedule": timedelta(seconds=20), # 定时每20秒执行一次 # "args": (), # 'kwargs': (), }, }project >init.py(主目录下的init文件)
# 将下一个版本中更新的内容导入到当前版本中 from __future__ import absolute_import, unicode_literals from .config_celery import app as celery_app __all__ = ['celery_app'] # 底下两行是配置pymysql的 import pymysql pymysql.install_as_MySQLdb()在创建的app里面添加tasks.py文件
from __future__ import absolute_import, unicode_literals from celery import shared_task import redis rc = redis.Redis('127.0.0.1', 6379) # 主机地址 也可以试试localhost import json import time from django.shortcuts import HttpResponse @shared_task def add(): print("15秒执行") @shared_task def mcn_name(): print("20秒执行") def mcn_gov(): print('25秒执行')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)