windows環(huán)境中利用celery實現(xiàn)簡單任務隊列過程解析
這篇文章主要介紹了windows環(huán)境中利用celery實現(xiàn)簡單任務隊列過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
一、背景
最近因項目需要,學習任務隊列Celery的用法;
二、測試使用環(huán)境:
1.Windows7 x64
2.Python == 3.7.5
3.celery == 4.3.0
4.redis =3.3.11
5.eventlet==0.25.1 ==> pip install eventlet (windows環(huán)境必須安裝)
6.IDE為pycharm
三、關于celery的安裝和卸載處理
pip install celery #安裝
pip install celery == 3.1.25 #指定安裝版本
pip uninstall celery #卸載
四、Celery分為3個部分
1.worker部分負責任務的處理,即工作進程(我的理解工作進程就是你寫的python代碼,當然還包括python調用系統(tǒng)工具功能)
2.broker部分負責任務消息的分發(fā)以及任務結果的存儲,這部分任務主要由中間數(shù)據(jù)存儲系統(tǒng)完成,比如消息隊列服務器RabbitMQ、redis、
3.Celery主類,進行任務最開始的指派與執(zhí)行控制,他可以是單獨的python腳本,也可以和其他程序結合,應用到django或者flask等web框架里面以及你能想到的任何應用
五、上代碼:
1.創(chuàng)建Celery實例tasks.py:
# -*- coding: utf-8 -*-
# 使用celery
import time
from celery import Celery
import redis
# 創(chuàng)建一個Celery類的實例對象
app = Celery('celery_tasks.tasks', broker='redis://:topsky@127.0.0.1:6379/1')
@app.task
def add(a, b):
count = a + b
print('任務函數(shù)正在執(zhí)行....')
time.sleep(5)
return count

2.調用celery任務代碼:
from celery_tasks.tasks import add def notity(a, b): # result = a + b result = add.delay(a, b) return result if __name__ == '__main__': result = notity(3, 5) print(result)

六、執(zhí)行worker
1.創(chuàng)建一個worker,等待處理隊列中的任務,打開Windows PowerShell終端以管理員身份運行,cd到E:\SvnCode\myCode目錄中,
2.執(zhí)行命令: celery -A celery_tasks.tasks worker -l info -P eventlet
參數(shù)解釋,命令中-A參數(shù)表示的是Celery APP的名稱celery_tasks,這個實例中指的就是tasks.py,后面的tasks就是APP的名稱,worker是一個執(zhí)行任務角色,后面的loglevel=info記錄日志類型默認是info,這個命令啟動了一個 worker, 用來執(zhí)行程序中add這個加法任務(task),-P eventlet是防止在windows環(huán)境下出現(xiàn)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
解決pycharm的Python console不能調試當前程序的問題
今天小編就為大家分享一篇解決pycharm的Python console不能調試當前程序的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
python實現(xiàn)用類讀取文件數(shù)據(jù)并計算矩形面積
今天小編就為大家分享一篇python實現(xiàn)用類讀取文件數(shù)據(jù)并計算矩形面積,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python中的異步:async?和?await以及操作中的事件循環(huán)、回調和異常
在現(xiàn)代編程中,異步操作在處理?I/O?密集型任務時,可以顯著提高程序的性能和響應速度,Python?提供了?async?和?await?關鍵字,使得編寫異步代碼變得更加直觀和簡潔,在這篇文章中,我們將深入探討?Python?的異步操作,并通過實際代碼示例來說明其使用方法2024-12-12
jupyter notebook 添加kernel permission denied的操作
這篇文章主要介紹了jupyter notebook 添加kernel permission denied的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
如何使用 Pylint 來規(guī)范 Python 代碼風格(來自IBM)
本文通過詳細的理論介紹和簡單易懂的實例全面介紹了 Python 代碼分析工具 Pylint。相信讀者看完后一定可以輕松地將 Pylint 運用到自己的開發(fā)工程中2018-04-04

