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

python分布式系統(tǒng)Celery安裝使用實例講解

 更新時間:2023年12月26日 10:54:15   作者:簡訊Alfred  
這篇文章主要為大家介紹了python分布式系統(tǒng)Celery安裝使用實例講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Celery 使用

Celery 是一個簡單高效可靠的分布式系統(tǒng)。在處理大量消息,實時處理異步任務(wù),定時執(zhí)行任務(wù),支持任務(wù)調(diào)度等方面使用起來更為靈活。

簡單理解 Celery 就是發(fā)布任務(wù)(Producer),消息中間件(Broker)接收任務(wù),執(zhí)行任務(wù)(Worker)或定時執(zhí)行任務(wù)(Celery Beat)。

任務(wù)隊列

任務(wù)隊列,顧名思義就是任務(wù)工作單元的集合,集合中存放了等待執(zhí)行的任務(wù)。

何時使用任務(wù)隊列?假如當(dāng)前我們需要執(zhí)行某項任務(wù),但是該任務(wù)比較耗時,且可以放在后臺執(zhí)行,為了不影響當(dāng)前操作,我們就把該任務(wù)放在任務(wù)隊列,等待調(diào)用和執(zhí)行。最常使用的場景是在 web 開發(fā)中。例如我們需要實現(xiàn)一個用戶認證發(fā)送電子郵件的功能,如果不使用異步執(zhí)行,我們需要等待電子郵件發(fā)送完成才可執(zhí)行下步操作,但是發(fā)送郵件的過程中,web 頁面會處于假死狀態(tài),影響用戶使用體驗。簡單的 web 應(yīng)用可以用多線程來完成該任務(wù),一旦任務(wù)量加重,還是需要使用更為強大的 Celery。

定時執(zhí)行任務(wù),可以理解為 crontab。

安裝

使用 Celery 的第一步就是選擇消息中間件。這里我們選擇 redis,上手快好操作。

安裝 redis

官方文檔[1]有詳細的源碼安裝說明。

這里介紹在 Ubuntu 16.04 下通過 apt 工具安裝:

apt-get install redis-server -y

啟動 redis:

redis-server

測試是否成功安裝:

?  ~ redis-cli
127.0.0.1:6379> PING
PONG

說明安裝成功。

終端輸入:

python3 -m pip install redis

這樣我們可以使用 python 操作 redis。

安裝 Celery

終端執(zhí)行:

python3 -m pip install celery

這樣就完成了 redis 和 Celery 的安裝。

簡單應(yīng)用

當(dāng)我們安裝好 redis,并啟動服務(wù)后,可以創(chuàng)建一個新的文件夾用來練習(xí) celery。

mkdir celery_test

進入該目錄后,創(chuàng)建文件 test.py,輸入以下內(nèi)容:

from celery import Celery
app = Celery(
    'hello',
    broker="redis://127.0.0.1:6379/1"
)
@app.task
def hello():
    # 耗時需要異步執(zhí)行的任務(wù)
    return 'hello world'

這就完成了 Celery 的簡單應(yīng)用。

如何使用呢?

我們需要在終端啟動 Celery 服務(wù)。輸入:

celery worker -A test --loglevel INFO

使用 python shell 簡單試一下:

>>> from test import hello
>>> hello.delay()
<AsyncResult: 182f57d7-71fc-4c61-b6b4-dbdd76ac4068>

是不是很簡單?這樣就完成了 Celery 的簡單使用。

使用配置文件

我們可以將 Celery 任務(wù)單獨做成模塊的形式,并通過配置文件來配置 Celery。

結(jié)構(gòu)如下:

.
├── app
│   ├── __init__.py
│   ├── config.py
│   └── tasks.py
└── test.py

app 文件夾下存放 Celery 相關(guān)配置和任務(wù)。

__init__.py 用來初始化 Celery,config.py 是 Celery 的配置文件,tasks.py 存放任務(wù)。

test.py 用來測試執(zhí)行任務(wù)。

init.py

from celery import Celery
app = Celery("hello")
# 使用配置文件
app.config_from_object("app.config")

config.py

"""
Celery 配置
"""
broker_url = "redis://127.0.0.1:6379/1"

很多教程基本使用都是大寫配置,但官方文檔中介紹在 4.0 以后開始推薦使用小寫配置,所以依據(jù)文檔這里使用小寫配置。

具體更多詳細配置可以查看Configuration and defaults[2]。

tasks.py

from app import app
@app.task
def hello():
    return "hello, world!"

這個文件存放耗時任務(wù)。

在終端啟動 Celery:

celery worker -A app.tasks --loglevel INFO

啟動成功后在 python shell 中測試:

>>> from app import tasks
>>> tasks.hello.delay()
<AsyncResult: 3aaa9e64-66ea-42dc-bed7-b1921275e9f9>

查看 Celery,和之前一樣,說明就執(zhí)行成功啦!

部署 Celery 和 redis

我們需要使用 supervisor 啟動和管理 Celery 和 redis 服務(wù)。

pip install supervisor

安裝完成后修改配置文件 /etc/supervisord.conf,加入以下配置(redis 的配置要寫在 Celery 之前):

[program:redis]
user = root
directory=/root/celery_test
command=redis-server
numprocs=1
startsecs = 5
startretries = 3
autostart=true
autorestart=true
; stdout 日志文件,需要注意當(dāng)指定目錄不存在時無法正常啟動,所以需要手動創(chuàng)建目錄(supervisord 會自動創(chuàng)建日志文件)
stdout_logfile = /root/logs/redis_stdout.log

[program:celery_worker]
user = root
directory=/root/celery_test
command=celery worker -A app.tasks --loglevel INFO --logfile /root/celery_worker.log
numprocs=1
startsecs = 5
startretries = 3
autostart=true
autorestart=true
stdout_logfile = /root/logs/celery_stdout.log

輸入命令啟動服務(wù):

supervisord -c /etc/supervisord.conf

這樣就完成了 redis 和 Celery 的部署。

引用鏈接

官方文檔: https://redis.io/download#installation 

Configuration and defaults: http://docs.celeryproject.org/en/latest/userguide/configuration.html#new-lowercase-settings 

以上就是python分布式系統(tǒng)Celery安裝使用實例講解的詳細內(nèi)容,更多關(guān)于python分布式系統(tǒng)Celery的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • PyCharm中Python解釋器如何選擇詳析

    PyCharm中Python解釋器如何選擇詳析

    這篇文章主要給大家介紹了關(guān)于PyCharm中Python解釋器如何選擇的相關(guān)資料,文中詳細分析了四種常見的Python環(huán)境管理工具,分別是venv、conda、pipenv和poetry,需要的朋友可以參考下
    2024-11-11
  • OpenCV利用python來實現(xiàn)圖像的直方圖均衡化

    OpenCV利用python來實現(xiàn)圖像的直方圖均衡化

    這篇文章主要介紹了OpenCV利用python來實現(xiàn)圖像的直方圖均衡化,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python web框架中實現(xiàn)原生分頁

    python web框架中實現(xiàn)原生分頁

    這篇文章主要為大家詳細介紹了python web框架中使用原生分頁的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • django實現(xiàn)模板中的字符串文字和自動轉(zhuǎn)義

    django實現(xiàn)模板中的字符串文字和自動轉(zhuǎn)義

    這篇文章主要介紹了django實現(xiàn)模板中的字符串文字和自動轉(zhuǎn)義,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python學(xué)習(xí)筆記之裝飾器

    Python學(xué)習(xí)筆記之裝飾器

    這篇文章主要介紹了Python 裝飾器的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • Python的基本語法詳解

    Python的基本語法詳解

    本文詳細講解了Python的基本語法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Python函數(shù)之zip函數(shù)的介紹與實際應(yīng)用

    Python函數(shù)之zip函數(shù)的介紹與實際應(yīng)用

    zip() 函數(shù)用于將可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個個元組,然后返回由這些元組組成的對象(python2 返回的是這些元組組成的列表 ),下面這篇文章主要給大家介紹了關(guān)于Python函數(shù)之zip函數(shù)實際應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 解決django服務(wù)器重啟端口被占用的問題

    解決django服務(wù)器重啟端口被占用的問題

    今天小編就為大家分享一篇解決django服務(wù)器重啟端口被占用的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 一文帶你了解Python枚舉類enum的使用

    一文帶你了解Python枚舉類enum的使用

    枚舉是與多個唯一常量綁定的一組符號,因為枚舉表示的是常量,建議枚舉成員名用大寫 IntEnum 便于進行系統(tǒng)交互。本文將通過一些示例代碼講解Python枚舉類的使用,需要的可以參考一下
    2022-10-10
  • Pandas?篩選和刪除目標值所在的行的實現(xiàn)

    Pandas?篩選和刪除目標值所在的行的實現(xiàn)

    本文主要介紹了Pandas篩選和刪除目標值所在的行的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評論

井研县| 吴桥县| 丰镇市| 渭源县| 黎平县| 临朐县| 大埔区| 炎陵县| 康马县| 太谷县| 青神县| 潮州市| 昭苏县| 武乡县| 射阳县| 莱西市| 博爱县| 汕尾市| 盐池县| 桂平市| 绿春县| 德钦县| 库尔勒市| 萍乡市| 衡阳市| 益阳市| 巫山县| 恩施市| 偃师市| 乳山市| 古田县| 盈江县| 大渡口区| 资溪县| 基隆市| 金川县| 泰顺县| 武义县| 海兴县| 海阳市| 手机|