1. 前言
最近需要用到Celery,初步學習了一下,但是遇到了一些問題,被搞的心力交瘁,,,,在此記錄下,
環境說明:win11 + python3.11 + celery5.2.7 + redis
2. 問題
2.1 學習檔案的選擇
剛開始在Eege直接搜索celery結果排在最前面的是10年前的介紹檔案(挺像官方的)XXX, 還點了進去看了半天,雖然和官方檔案內容很像,但是還是有很多細節不一樣,結果導致了一些問題,下次一定得看清楚日期,版本號這些,
2.2 celery啟動報錯:Fatal Python error: init_import_site: Failed to import the site module,,,,
執行以下命令后報錯: celery -A celery_task worker --loglevel=INFO
錯誤截圖:
1

2

原因分析: 具體原因可能是python的環境導致的,但學淺不太弄的清楚
解決: 在配置celery引數時引數名稱需要小寫,celery比較新的版本已經更新引數名稱了
點擊查看代碼
from celery import Celery
celery_app = Celery('celery_task', broker='redis://127.0.0.1:6379/1', backend='redis://127.0.0.1:6379/2')
# 舊的配置方式
celery_app.conf.update(
CELERY_TASK_SERIALIZER='json',
CELERY_ACCEPT_CONTENT=['json'],
CELERY_RESULT_SERIALIZER='json',
CELERY_TIMEZONE='Asia/Shanghai',
CELERY_ENABLE_UTC=True,
)
# 新的配置方式
celery_app.conf.update(
task_serializer='json',
accept_content=['json'],
result_serializer='json',
timezone='Asia/Shanghai',
enable_utc=True ,
)
@celery_app.task
def add(x, y):
print("開始執行了")
return x + y
2.3 在windows下正確啟動Celery
啟動方式一(有問題): celery -A celery_task worker --loglevel=INFO
現象: 用上述命令在windows下能正常啟動,但去呼叫任務時(delay)任務不會執行,在配置的后端backend存盤地址中也沒有結果保存,僅在broker的存盤位置中會產生兩個key (unacked, unacked_index),這兩個key應該存盤的未被執行的任務資訊

啟動方式二: celery -A celery_task worker --loglevel=INFO -P eventlet -c 3
說明 好像是celery不支持在windows下運行,需要借助eventlet (pip install即可)
現象: 用上述命令在windows下正常啟動后,任務才會被執行,backend中才有結果資訊輸出

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552612.html
標籤:其他
上一篇:【pandas基礎】--資料修改
下一篇:返回列表
