celery報錯錦集及解決方案
阿新 • • 發佈:2020-12-09
celery報錯錦集及解決方案
到網上查看了很多資料都沒有用 寫一個部落格記錄一下。
在view.py中呼叫非同步函式的時候導包除了問題。之前一直以為是絕地路徑。害~~~
import os, sys
from opwf.settings import BASE_DIR, SECRET_KEY
sys.path.insert(0, os.path.join(BASE_DIR, '../celery_task'))
from main import send_sms_code # 必須這麼寫, 從main中導包
需要在配置celery的檔案內新增django環境
import django # 1.新增django專案根路徑 CELERY_BASE_DIR = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, os.path.join(CELERY_BASE_DIR, '../opwf')) # 2.新增django環境 os.environ.setdefault("DJANGO_SETTINGS_MODULE","opwf.settings") django.setup() # 讀取配置
或者:
不要講 add_together 方法寫在主模組中,因為註冊時註冊的task為模組名.add_together, 而呼叫時task為 main.add_together
再或者:
不要將非同步任務函式的定義和呼叫寫到同一個檔案中
我們需要在整個django專案外執行命令 可以參考上方的目錄圖片。。。
celery -A celery_task worker -l info -P eventlet