国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

在django中使用celery

meislzhua / 2275人閱讀

摘要:前言針對高延時任務(wù)直接在一次網(wǎng)絡(luò)請求中處理完畢會導(dǎo)致很不好的體驗則可以不阻塞請求后臺處理這些任務(wù)并且可以使用的進(jìn)行數(shù)據(jù)庫操作環(huán)境其他創(chuàng)建工程此時項目結(jié)構(gòu)如下修改添加修改創(chuàng)建新創(chuàng)

前言: 針對高延時任務(wù), 直接在一次網(wǎng)絡(luò)請求中處理完畢會導(dǎo)致很不好的體驗, celery則可以不阻塞請求后臺處理這些任務(wù), 并且可以使用django的models進(jìn)行數(shù)據(jù)庫操作.
環(huán)境

python models:

celery-4.1.1

redis-2.10.6

django-1.11.7

其他:

redis-3.2.9

macos

python3.6

創(chuàng)建django工程

django-admin startproject dc
cd dc
django-admin startapp main

此時項目結(jié)構(gòu)如下

dc
|-- __init__.py
|-- main
|   |-- __init__.py
|   |-- admin.py
|   |-- apps.py
|   |-- migrations
|   |   `-- __init__.py
|   |-- models.py
|   |-- tests.py
|   `-- views.py
|-- settings.py
|-- urls.py
`-- wsgi.py

修改settings.py, 添加app

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "dc.main" //new added
]

修改dc/main/models.py, 創(chuàng)建新models

from django.db import models

# Create your models here.

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

創(chuàng)建根訪問節(jié)點

dc/main/views.py

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.


def hello(request):
    return HttpResponse("hello world")

dc/urls.py

urlpatterns = [
    url(r"^admin/", admin.site.urls),
    url(r"^$", hello) //new added
]

依次執(zhí)行以下語句, 初始化django各功能模塊

python manage.py migrate
python manage.py makemigrations main
python manage.py sqlmigrate main 0001
python manage.py migrate

接下來python manage.py runserver, 訪問http://127.0.0.1:8000 即可看到hello world.

啟動redis

redis是作為celery中間件使用的, 用來存儲消息隊列.

redis解壓后, 直接運行src/redis-server即可啟動, 默認(rèn)端口6379

配置celery

參考文檔

創(chuàng)建dc/celery.py

#-*- coding:utf-8 -*-

import os
from celery import Celery

# set the default Django settings module for the "celery" program.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dc.settings")

app = Celery("dc")

# Using a string here means the worker doesn"t have to serialize
# the configuration object to child processes.
# - namespace="CELERY" means all celery-related configuration keys
#   should have a `CELERY_` prefix.
app.config_from_object("django.conf:settings", namespace="CELERY")

# Load task modules from all registered Django app configs.
app.autodiscover_tasks()

修改 dc/__init__.py

from .celery import app as celery_app

__all__ = ["celery_app"]

修改 dc/settings.py, 設(shè)定 redis URL

CELERY_BROKER_URL = "redis://127.0.0.1:6379/3"

創(chuàng)建dc/main/tasks.py

#-*- coding:utf-8 -*-

from celery import shared_task

@shared_task
def test():
    import time
    time.sleep(5)
    from dc.main.models import Person
    person = Person(first_name="smith", last_name="jhon")
    person.save()
    c = Person.objects.count()
    print(f"person count is {c}")

修改dc/main/views.py

def hello(request):
    from dc.main.tasks import test
    test.delay()
    return HttpResponse("hello world")

啟動celery進(jìn)程

celery -A dc worker -l info

接下來訪問http://127.0.0.1:8000, 即可發(fā)現(xiàn)頁面立刻返回, 并沒有被time阻塞, 查看啟動celery的窗口, 即可發(fā)現(xiàn)log以及打印的信息, 確定models可以正常使用.

おわり.

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41826.html

相關(guān)文章

  • 7-django——文件上傳_分頁_ajax_富文本_celery

    摘要:上傳文件概述當(dāng)在處理文件上傳時,文件的數(shù)據(jù)被存儲在屬性中只有在請求的方法為且提交的表單帶有屬性的情況才會包含數(shù)據(jù)。如豆瓣,防止頁面卡死。 上傳文件 概述 當(dāng)Django在處理文件上傳時,文件的數(shù)據(jù)被存儲在request.FILES屬性中 FILES只有在請求的方法為POST且提交的form表單帶有enctype=multipart/form-data屬性的情況才會包含數(shù)據(jù)。否則,F(xiàn)IL...

    lylwyy2016 評論0 收藏0
  • django開發(fā)-使用celery搭建分布式(多節(jié)點)任務(wù)隊列

    摘要:今天介紹一下如何在項目中使用搭建一個有兩個節(jié)點的任務(wù)隊列一個主節(jié)點一個子節(jié)點主節(jié)點發(fā)布任務(wù),子節(jié)點收到任務(wù)并執(zhí)行。 今天介紹一下如何在django項目中使用celery搭建一個有兩個節(jié)點的任務(wù)隊列(一個主節(jié)點一個子節(jié)點;主節(jié)點發(fā)布任務(wù),子節(jié)點收到任務(wù)并執(zhí)行。搭建3個或者以上的節(jié)點就類似了),使用到了celery,rabbitmq。這里不會單獨介紹celery和rabbitmq中的知識了...

    ConardLi 評論0 收藏0
  • Django使用celery 異步發(fā)送短信驗證碼

    摘要:介紹應(yīng)用舉例是一個基于開發(fā)的分布式異步消息任務(wù)隊列,通過它可以輕松的實現(xiàn)任務(wù)的異步處理,如果你的業(yè)務(wù)場景中需要用到異步任務(wù),就可以考慮使用你想對臺機器執(zhí)行一條批量命令,可能會花很長時間,但你不想讓你的程序等著結(jié)果返回,? celery 1.celery介紹 1.1 celery應(yīng)用舉例 Celery 是一個 基于python開發(fā)的分布式異步消息任務(wù)隊列,通過...

    everfly 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<