日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

celery 可视化_Django中Celery的实现介绍(一)

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 celery 可视化_Django中Celery的实现介绍(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Django中Celery的實現

Celery介紹

Celery是基于Python開發的一個分布式任務隊列框架,支持使用任務隊列的方式在分布的機器/進程/線程上執行任務調度。

上圖展示的是Celery的架構,它采用典型的生產者-消費者模式,主要由三部分組成:broker(消息隊列)、workers(消費者:處理任務)、backend(存儲結果)。

消息中間件:Celery本身不提供消息服務,但是可以方便的和第三方提供的消息中間件集成。包括,RabbitMQ, Redis, MongoDB (experimental), Amazon SQS (experimental),CouchDB (experimental), SQLAlchemy (experimental),Django ORM (experimental), IronMQ。

任務執行單元:Worker是Celery提供的任務執行的單元,worker并發的運行在分布式的系統節點中。

任務結果存儲:Task result store用來存儲Worker執行的任務的結果,Celery支持以不同方式存儲任務的結果,包括AMQP, Redis,memcached, MongoDB,SQLAlchemy, Django ORM,Apache Cassandra, IronCache。

實際應用中,用戶從Web前端發起一個請求,我們只需要將請求所要處理的任務放入任務隊列broker中,由空閑的worker去處理任務即可,處理的結果會暫存在后臺數據庫backend中。我們可以在一臺機器或多臺機器上同時起多個worker進程來實現分布式地并行處理任務。

安裝

pip install django? 安裝django

pip install celery==3.1.23?安裝celery

pip install django-celery? 安裝django-celery

對Redis的支持需要額外的依賴。你可以用 celery[redis] 捆綁 同時安裝 Celery 和這些依賴

pip install -U celery[redis]

pip install python-jenkins? 安裝jenkins

消息隊列

yum install -y rabbitmq-server? 安裝rabbitmq

環境變量PATH加入/usr/lib/rabbitmq/bin

rabbitmq-plugins enable rabbitmq_management ?啟用web管理插件

chkconfig rabbitmq-server on ?開機自啟動

/etc/init.d/rabbitmq-server start ?啟動RabbitMQ

增加用戶

rabbitmqctl add_user shhnwangjian 123456

rabbitmqctl set_user_tags shhnwangjian administrator

命令執行成功后,rabbitmq-server就已經安裝好并運行在后臺了。

WEB頁面訪問:http://ip地址:15672/

另外也可以通過命令rabbitmq-server來啟動rabbitmq server以及命令rabbitmqctl stop來停止server。

django中celery實現

創建項目和app

django-admin.py startproject celery-wj

cd celery-wj

django-admin.py startapp app01

配置settings.py

當djcelery.setup_loader()運行時,Celery便會去查看INSTALLD_APPS下包含的所有app目錄中的tasks.py文件,找到標記為task的方法,將它們注冊為celery task。

BROKER_URL和CELERY_RESULT_BACKEND分別指代你的Broker的代理地址以及Backend(result store)數據存儲地址。

在Django中如果沒有設置backend,會使用其默認的后臺數據庫用來存儲數據。注意,此處backend的設置是通過關鍵字CELERY_RESULT_BACKEND來配置,與一般的.py文件中實現celery的backend設置方式有所不同。一般的.py中是直接通過設置backend關鍵字來配置,如下所示:

test = Celery('tasks', backend='redis://10.10.83.162:16379/0', broker='redis://10.10.83.162:16379/9')

Django下要查看其他celery的命令,包括參數配置、啟動多worker進程的方式都可以通過python manage.py celery --help來查看:

創建一個task

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

from celery import task

@task

def add(x, y):

return x + y

注意:與一般的.py中實現celery不同,tasks.py必須建在各app的根目錄下,且不能隨意命名。

views.py

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

from django.shortcuts import HttpResponse, render, redirect, HttpResponseRedirect

from app01 import tasks

def add_test(request):

result = tasks.add.delay(2, 2)

print result

if result.ready():

print "Task has run"

if result.successful():

print "Result was: %s" % result.result

else:

if isinstance(result.result, Exception):

print "Task failed due to raising an exception"

raise result.result

else:

print "Task failed without raising exception"

else:

print "Task has not yet run"

return HttpResponse(result)

urls.py

from django.conf.urls import url

from django.contrib import admin

from app01 import views

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^add/$', views.add_test, name='add'),

]

#先啟動服務

python manage.py runserver 0.0.0.0:9008

#再啟動worker

python manage.py celery worker -c 4 --logievel=info

通過terminal測試task

python manage.py shell

>>> from app01 import tasks

>>> tasks.add.delay(3,5)

通過頁面訪問測試task

Celery的可視化監控工具flower

1.安裝flower

pip install flower

2.啟動

python manage.py celery flower --port=9008(默認是5555端口)

3.幫助

python manage.py celery flower --help

4.可視化頁面

http://localhost:9008

Django中如何使用django-celery完成異步任務:http://www.weiguda.com/blog/73/

總結

以上是生活随笔為你收集整理的celery 可视化_Django中Celery的实现介绍(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。