本文介绍: (10)tasks.py文件定义异步或定时任务。(4)urls.py引用视图views。(11)编写配置文件config.py。(22)浏览器再次刷新或回车,进行观察。(15)浏览器刷新或回车,进行观察。(14)view视图添加异步代码。(17) mycelery根目录。(26)查看Redis可视化界面。(7)查看运行结果,点击链接。(20)注释异步任务代码。(21)添加定时任务代码。(1)安装Django。(13)tasks文件。(24)查看RUN结果。(19)查看异步消息。(23)查看定时消息。
一、实验
1.Django使用Celery完成异步和定时任务
(3)初始框架
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('test/',views.test)
]
from django.shortcuts import render,HttpResponse
# Create your views here.
def test(request):
return HttpResponse("OK")
(8)显示OK
http://127.0.0.1:8000/test/
#消息中间件
broker_url = 'redis://127.0.0.1:6379/15'
#异步存储地方
result_backend = 'redis://127.0.0.1:6379/14'
# -*- coding: utf-8 -*-
# 主程序
import os
import celery as celery
from celery import Celery
import eventlet
# 创建celery实例对象
app = Celery("djcelery")
# 把celery和django进行组合,识别和加载django的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'celeryPros.settings.dev')
# 通过app对象加载配置
app.config_from_object("mycelery.config")
# 加载任务
# 参数必须必须是一个列表,里面的每一个任务都是任务的路径名称
# app.autodiscover_tasks(["任务1","任务2"])
app.autodiscover_tasks(["mycelery.sms",])
# -*- coding: utf-8 -*-
# celery的任务必须写在tasks.py的文件中,别的文件名称不识别!!!
from mycelery.main import app
import time
import logging
log = logging.getLogger("django")
@app.task # name表示设置任务的名称,如果不填写,则默认使用函数名做为任务名
def send_sms(mobile):
"""发送短信"""
print("向手机号%s发送短信成功!"%mobile)
time.sleep(5)
return "send_sms OK"
@app.task # name表示设置任务的名称,如果不填写,则默认使用函数名做为任务名
def send_sms2(mobile):
print("向手机号%s发送短信成功2!"%mobile)
time.sleep(5)
return "send_sms2 OK"
from django.shortcuts import render,HttpResponse
# Create your views here.
from mycelery.sms.tasks import send_sms,send_sms2
def test(request):
#异步任务
# 1. 声明一个和celery一模一样的任务函数,但是我们可以导包来解决
# send_sms.delay("139XXXXXXXX")
# send_sms2.delay("135XXXXXXXX")
# send_sms.delay() 如果调用的任务函数没有参数,则不需要填写任何内容
(15)浏览器刷新或回车,进行观察
(16)消费者一方配置完成
(18)已启动消费
PS D:softDjcelery> celery --app=mycelery.main worker -n node1 -l INFO -P eventlet
(20)注释异步任务代码
#定时任务
from datetime import datetime,timedelta
ctime = datetime.now()
# 默认用utc时间
utc_ctime = datetime.utcfromtimestamp(ctime.timestamp())
time_delay = timedelta(seconds=10)
task_time = utc_ctime + time_delay
result = send_sms.apply_async(["136XXXXXXXX", ], eta=task_time)
print(result.id)
(22)浏览器再次刷新或回车,进行观察
二、问题
1. 如何查看Django版本
(1)方式一
indows系统下,在cmd命令窗口中输入python进入Python解释器
Linux系统下, 直接使用终端调用Python解释器
接下来输入:
>>> import django
>>> print django.VERSION # Python2的格式
>>> print(django.VERSION) # Python3的格式
或者输入:
>>> django.get_version() # 获取当前djiango版本号
(2)方式二
在IDE内 的terminal 内输入
python -m django --version
django-admin --version
这两个命令 一样可以查询到。
注意:通常在项目的目录下查询。这种方式适合项目已经建立,虚拟Python环境也已经配置好。Django不是全局安装的时候。
(3)方式三
Windows系统下,在cmd命令窗口中输入python进入Python解释器
Linux系统下,直接使用终端调用Python解释器
直接输入:
python -m django --version
django-admin --version
注意:这里django是全局安装。
(4)方法四
在项目目录下的lib文件夹内的site-packpage文件夹内直接可以看到Django版本。
原文地址:https://blog.csdn.net/cronaldo91/article/details/134609038
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_14447.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。