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

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

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

Celery 使用

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

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

任務隊列

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

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

定時執(zhí)行任務,可以理解為 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 的安裝。

簡單應用

當我們安裝好 redis,并啟動服務后,可以創(chuàng)建一個新的文件夾用來練習 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í)行的任務
    return 'hello world'

這就完成了 Celery 的簡單應用。

如何使用呢?

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

celery worker -A test --loglevel INFO

使用 python shell 簡單試一下:

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

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

使用配置文件

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

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

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

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

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

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

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!"

這個文件存放耗時任務。

在終端啟動 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 服務。

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 日志文件,需要注意當指定目錄不存在時無法正常啟動,所以需要手動創(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

輸入命令啟動服務:

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)圖像的直方圖均衡化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    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學習筆記之裝飾器

    Python學習筆記之裝飾器

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

    Python的基本語法詳解

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

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

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

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

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

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

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

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

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

最新評論

深泽县| 深州市| 德化县| 二手房| 福鼎市| 登封市| 广元市| 南和县| 湾仔区| 邯郸市| 明水县| 泉州市| 保德县| 若尔盖县| 通州区| 太仆寺旗| 绥芬河市| 长阳| 临颍县| 方山县| 蓬溪县| 庆安县| 广东省| 崇文区| 上思县| 阳原县| 新乡市| 青铜峡市| 涟水县| 张家界市| 靖宇县| 方城县| 江油市| 民勤县| 铁岭县| 吉安县| 郑州市| 随州市| 纳雍县| 元阳县| 科技|