欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

Celery 使用

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

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

任務隊列

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

何時使用任務隊列?假如當前我們需要執(zhí)行某項任務,但是該任務比較耗時,且可以放在后臺執(zhí)行,為了不影響當前操作,我們就把該任務放在任務隊列,等待調用和執(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,輸入以下內容:

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。

結構如下:

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

app 文件夾下存放 Celery 相關配置和任務。

__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安裝使用實例講解的詳細內容,更多關于python分布式系統(tǒng)Celery的資料請關注腳本之家其它相關文章!

相關文章

  • JetBrains PyCharm(Community版本)的下載、安裝和初步使用圖文教程詳解

    JetBrains PyCharm(Community版本)的下載、安裝和初步使用圖文教程詳解

    這篇文章主要介紹了JetBrains PyCharm(Community版本)的下載、安裝和初步使用教程,本文圖文并茂給大家介紹的非常詳細,對大家的學習和工作具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2020-03-03
  • Python爬蟲教程知識點總結

    Python爬蟲教程知識點總結

    在本篇文章里小編給大家整理的是一篇關于Python爬蟲教程知識點總結,有興趣的朋友們可以學習參考下。
    2020-10-10
  • python實現(xiàn)三次樣條插值

    python實現(xiàn)三次樣條插值

    這篇文章主要為大家詳細介紹了python實現(xiàn)三次樣條插值,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Python  中的pass語句語法詳析

    Python  中的pass語句語法詳析

    這篇文章主要介紹了Python 中的pass語句語法詳析,pass是一種空操作(null operation),解釋器執(zhí)行到它的時候,除了檢查語法是否合法,什么也不做就直接跳過
    2022-07-07
  • 為什么黑客都用python(123個黑客必備的Python工具)

    為什么黑客都用python(123個黑客必備的Python工具)

    python支持功能強大的黑客攻擊模塊,而且Python提供多種庫,用于支持黑客攻擊,Python提供了ctypes庫, 借助它, 黑客可以訪問Windows、OS X、Linux等系統(tǒng)提供 DLL與共享庫,還有Python語言易學易用,這對黑客攻擊而言是個巨大的優(yōu)勢。
    2020-01-01
  • Python利用matplotlib生成圖片背景及圖例透明的效果

    Python利用matplotlib生成圖片背景及圖例透明的效果

    這篇文章主要給大家介紹了Python利用matplotlib生成圖片背景及圖例透明效果的相關資料,文中給出了詳細的示例代碼,相信對大家具有一定的參考家價值,需要的朋友們下面來一起學習學習吧。
    2017-04-04
  • python中用ggplot繪制畫圖實例講解

    python中用ggplot繪制畫圖實例講解

    在本篇文章里小編給大家整理的是一篇關于python中用ggplot繪制畫圖實例講解內容,有興趣的朋友們可以學習參考下。
    2021-01-01
  • python如何提取xml指定內容

    python如何提取xml指定內容

    這篇文章主要介紹了python如何提取xml指定內容,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python re 模塊findall() 函數(shù)返回值展現(xiàn)方式解析

    Python re 模塊findall() 函數(shù)返回值展現(xiàn)方式解析

    這篇文章主要介紹了Python re 模塊findall() 函數(shù)返回值展現(xiàn)方式解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Python爬蟲之教你利用Scrapy爬取圖片

    Python爬蟲之教你利用Scrapy爬取圖片

    這篇文章主要介紹了Python爬蟲之教你利用Scrapy爬取圖片,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04

最新評論