目录

一、实验

1.Django使用Celery完成异步和定时任务

二、问题

1. 如何查看Django版本


一、实验

1.Django使用Celery完成异步定时任务

(1)安装Django

5a9464f9ec8747a5a871ef12af45ee40.png

(2)新建Django项目

44a8545a19964884ba77d3f08d214911.png

(3)初始框架

4d8c2ecf5fb24ad6afff188b38689882.png

(4)urls.py引用视图views

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('test/',views.test)
]

d7fc8b935f81497dbd084c115bfe697d.png

(5)编写view

from django.shortcuts import render,HttpResponse

# Create your views here.
def test(request):

    return HttpResponse("OK")

01feeba7ee1a41b6ba501630f5ec94fc.png

(6)点击运行

06027a586da5472cb8b40776ade14fc7.png

(7)查看运行结果点击链接

daa1cbd3a45d4a03a11749a80f5a2c79.png

(8)显示OK

http://127.0.0.1:8000/test/

76d7e51dd94540c8ad89f872b203bfa2.png

(9)新建消费者目录mycelery

50975546a2984fe483d121edb726171f.png

(10)tasks.py文件定义异步定时任务

c9b8ff5e829e46c39a87acd80b02bcf0.png

(11)编写配置文件config.py

#消息中间件
broker_url = 'redis://127.0.0.1:6379/15'
#异步存储地方
result_backend = 'redis://127.0.0.1:6379/14'

c202d200f6bb4d10b02aac06b616ae42.png

(12)main.py将配置文件解耦

# -*- coding: utf-8 -*-
# 主程序
import os
import celery as celery
from celery import Celery
import eventlet
# 创建celery实例对象
app = Celery("djcelery")
# 把celerydjango进行组合识别加载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",])

655de13e4cd4427d834992a34875add8.png

(13)tasks文件

# -*- 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"

62620b8b00d047ebb4f6480f79975ae1.png

(14)view视图添加异步代码

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() 如果调用的任务函数没有参数,则不需要填写任何内容

f2dbe534582146f8aff7f77cedbf0ffc.png

(15)浏览器刷新或回车,进行观察

cc4816e2f20344b3b3214b9b7d14437b.png

(16)消费者一方配置完成

120dc93fd71e4bba828e8c20760617e8.png

(17) mycelery根目录

9461d0dbae3d44c7bf3edb2e32ab9fd5.png

(18)已启动消费

PS D:softDjcelery> celery --app=mycelery.main worker -n node1 -l INFO -P eventlet

1656a3e859874dc9a5724db7e8352afc.png

(19)查看异步消息

f2e57b9088aa41d9ba087e61d1d8a24f.png

(20)注释异步任务代码

79fefee8862248368ac2339656859b48.png

(21)添加定时任务代码

    #定时任务
    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)

29ded7510c854ca2b62b7256ce541dd1.png

(22)浏览器再次刷新或回车,进行观察

5710441dc152442385b142237a6646d5.png

(23)查看定时消息

013c86c38e8947f9853fe7fb3ce76862.png

(24)查看RUN结果

cf0fb8b158434f4fad0d3250dcae1882.png

(25)完整项目架构

b703389168dc462ebdc6e19b83e97dca.png

(26)查看Redis可视化界面

0e08f08eb733447e94fd7e092f1e7ba9.png

cc6400fb94a84fcfa76e947deafe376e.png

e7087865617743b4b029ebb975817699.png

a5d29e2cd7f249699228817ad7e157de.png

二、问题

1. 如何查看Django版本

(1)方式

indows系统下,在cmd命令窗口输入python进入Python解释器
Linux系统下, 直接使用终端调用Python解释器

接下来输入:
>>> import django
>>> print django.VERSION # Python2的格式
>>> printdjango.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版本

6b6311d8fd3944f7968a718dde6af178.png

原文地址:https://blog.csdn.net/cronaldo91/article/details/134609038

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_14447.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

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