最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django中使用Celery的方法步驟

 更新時間:2020年12月07日 08:30:11   作者:三省吾身  
這篇文章主要介紹了Django中使用Celery,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

(一)、概述

Celery是一個簡單、靈活和可靠的基于多任務(wù)的分布式系統(tǒng),為運營提供用于維護此系統(tǒng)的工具。專注于實時處理的任務(wù)隊列,同時也支持任務(wù)的調(diào)度。執(zhí)行單元為任務(wù)(task),利用多線程這些任務(wù)可以被并發(fā)的在單個或多個職程(worker)上運行。

Celery通過消息機制通信,通常通過中間人(broker)來分配和調(diào)節(jié)客戶端與職程服務(wù)器(worker)之間的通信??蛻舳税l(fā)送一條消息,中間人把消息分配給一個職程,最后由職程來負(fù)責(zé)執(zhí)行此任務(wù)。

Celery可以有多個職程和中間人,這樣提高了高可用性和橫向的擴展能力

Celery由python語言開發(fā),但是該協(xié)議可以用任何語言拉力實現(xiàn),例如:Django中的Celery、node中的node-celery和php中的celery-php

(二)、Django中使用Celery的流程與配置

導(dǎo)入Celery:pip3 install Celery

在 與項目同名的目錄下 創(chuàng)建celery.py文件,特別注意:項目同名的目錄下

復(fù)制內(nèi)容到該文件

修改兩處內(nèi)容

  • os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')中的proj改為項目名
  • app = Celery('pro')中的pro改為項目名
import os

from celery import Celery

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

app = Celery('pro')

# 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()


@app.task(bind=True)
def debug_task(self):
  print(f'Request: {self.request!r}')

在 與項目同名的目錄下 的__init__.py文件中添加內(nèi)容

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app

__all__ = ('celery_app',)

在settings.py文件中添加配置

  • CELERY_BROKER_URL:中間人url,可以配置redis或者RabbitMQ
  • CELERY_RESULT_BACKEND:返回結(jié)果的存儲地址
  • CELERY_ACCEPT_CONTENT:接收內(nèi)容的格式,分為兩種:json和msgpack。msgpack比json格式的數(shù)據(jù)體積更小,傳輸速度更快。
  • CELERY_TASK_SERIALIZER:任務(wù)載荷的序列化方式-->json
  • CELERY_TIMEZONE
  • CELERY_TASK_TRACK_STARTED:是否開啟任務(wù)跟蹤
  • CELERY_TASK_TIME_LIMIT:任務(wù)超時限制
# Celery配置
CELERY_BROKER_URL = env("CELERY_BROKER_URL")
CELERY_RESULT_BACKEND = env("CELERY_RESULT_BACKEND")
CELERY_ACCEPT_CONTENT = ["json", "msgpack"]
CELERY_TASK_SERIALIZER = "json"
CELERY_TIMEZONE = "Asia/Shanghai"
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = 30 * 60

在app下創(chuàng)建tasks.py文件,創(chuàng)建發(fā)送消息功能,任務(wù)方法必須添加裝飾器:@shared_task

from rest_framework.response import Response
from rest_framework.generics import GenericAPIView
from time import sleep
from celery import shared_task

class TestView3(GenericAPIView):

  @classmethod
  @shared_task
  def sleep(self, duration):
    sleep(duration)
    return Response("成功", status=200)

創(chuàng)建視圖和路由

### views.py
from .tasks import TestView3
class TestView1(GenericAPIView):
  def get(self, request):
    TestView3.sleep(10)
    return Response("celery實驗成功")
test_view_1 = TestView1.as_view()

### urls.py
from django.urls import path
from .views import (
  test_view_1
)

urlpatterns = [
  path('celery/', test_view_1, name="test1")
]

安裝redis并啟動

啟動django項目

使用Celery命令啟動Celery服務(wù),命令:celery -A 項目名 worker -l info,如果如下所示則為啟動成功.

celery@AppledeMacBook-Air.local v5.0.3 (singularity)

Darwin-20.1.0-x86_64-i386-64bit 2020-12-05 20:52:17

[config]
.> app:     drf_email_project:0x7f84a0c4ad68
.> transport:  redis://127.0.0.1:6379/1%20
.> results:   redis://127.0.0.1:6379/2
.> concurrency: 4 (prefork)
.> task events: OFF (enable -E to monitor tasks in this worker)

[queues]
.> celery      exchange=celery(direct) key=celery


[tasks]
 . drf_email_project.celery.debug_task
 . users.tasks.sleep

[2020-12-05 20:52:18,166: INFO/MainProcess] Connected to redis://127.0.0.1:6379/1%20
[2020-12-05 20:52:18,179: INFO/MainProcess] mingle: searching for neighbors
[2020-12-05 20:52:19,212: INFO/MainProcess] mingle: all alone
[2020-12-05 20:52:19,248: WARNING/MainProcess] /Users/apple/drf-email/lib/python3.7/site-packages/celery/fixups/django.py:204: UserWarning: Using settings.DEBUG leads to a memory
      leak, never use this setting in production environments!
 leak, never use this setting in production environments!''')

[2020-12-05 20:52:19,249: INFO/MainProces

到此這篇關(guān)于Django中使用Celery的方法步驟的文章就介紹到這了,更多相關(guān)Django使用Celery的方法步驟內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 6行Python代碼實現(xiàn)進度條效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI庫)

    6行Python代碼實現(xiàn)進度條效果(Progress、tqdm、alive-progress​​

    這篇文章主要介紹了6行Python代碼實現(xiàn)進度條效果(Progress、tqdm、alive-progress和PySimpleGUI庫),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 關(guān)于python中.xpath的使用問題

    關(guān)于python中.xpath的使用問題

    根據(jù)xpath定位到了tr,注意瀏覽器自動生成了tbody,在python中要把自動生成的tbody層級去掉,這樣要怎么操作呢?下面通過代碼給大家介紹下python中.xpath的使用問題,感興趣的朋友一起看看吧
    2021-11-11
  • Python爬蟲之爬取嗶哩嗶哩熱門視頻排行榜

    Python爬蟲之爬取嗶哩嗶哩熱門視頻排行榜

    這篇文章主要介紹了Python爬蟲之爬取嗶哩嗶哩熱門視頻排行榜,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 使用PIL(Python-Imaging)反轉(zhuǎn)圖像的顏色方法

    使用PIL(Python-Imaging)反轉(zhuǎn)圖像的顏色方法

    今天小編就為大家分享一篇使用PIL(Python-Imaging)反轉(zhuǎn)圖像的顏色方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 如何在mac版pycharm選擇python版本

    如何在mac版pycharm選擇python版本

    這篇文章主要介紹了如何在mac版pycharm選擇python版本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Python實現(xiàn)向PPT中插入表格與圖片的方法詳解

    Python實現(xiàn)向PPT中插入表格與圖片的方法詳解

    這篇文章將帶大家學(xué)習(xí)一下如何在PPT中插入表格與圖片以及在表格中插入內(nèi)容,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • Python通過keyboard庫實現(xiàn)模擬和監(jiān)聽鍵盤

    Python通過keyboard庫實現(xiàn)模擬和監(jiān)聽鍵盤

    這篇文章主要為大家詳細(xì)介紹了Python如何通過keyboard庫實現(xiàn)模擬和監(jiān)聽鍵盤,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-10-10
  • 你需要學(xué)會的8個Python列表技巧

    你需要學(xué)會的8個Python列表技巧

    這篇文章主要介紹了8個常用的Python列表技巧,文中講解非常詳細(xì),幫助大家更好的學(xué)習(xí)Python,感興趣的朋友可以了解下
    2020-06-06
  • 在Python的setuptools框架下生成egg的教程

    在Python的setuptools框架下生成egg的教程

    這篇文章主要介紹了在Python的setuptools框架下生成egg的教程,本文來自于IBM官方開發(fā)者技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Python實現(xiàn)監(jiān)控屏幕界面內(nèi)容變化并發(fā)送通知

    Python實現(xiàn)監(jiān)控屏幕界面內(nèi)容變化并發(fā)送通知

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實現(xiàn)實時監(jiān)控屏幕上的信息是否發(fā)生變化并發(fā)送通知,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-04-04

最新評論

正镶白旗| 驻马店市| 凤山县| 贡山| 保亭| 陕西省| 彝良县| 枣阳市| 潜江市| 正定县| 宜宾市| 丰台区| 铁岭县| 盐源县| 大兴区| 阿拉善左旗| 米易县| 中阳县| 偏关县| 乾安县| 黑山县| 靖安县| 全州县| 恩平市| 自贡市| 英山县| 海淀区| 周至县| 济宁市| 客服| 康乐县| 于田县| 湟中县| 葵青区| 凤冈县| 新兴县| 九江县| 桃园县| 青冈县| 高州市| 双江|