使用Celery遇到的坑


通過Celery操作雲通訊,發送短信驗證碼報錯{'172001':'網絡錯誤'}針對Windows系統,Mac系統不曉得

1、檢查是否取消全局證書驗證
import ssl
# 全局取消證書驗證
ssl._create_default_https_context = ssl._create_unverified_context
2、檢查相關的配置參數是否有錯誤。
比如端口,請求地址,主賬號,APPID,API版本等是否配置正確,有一個出問題就會報{'172001':'網絡錯誤'}
3、檢查參數傳遞是否正常,
比如手機號、驗證碼,核心代碼是否能接受到對應的值,會提示發送失敗
4、解釋器版本問題【最重要的一點】。
Python解釋器版本的問題,celery的版本不兼容Python3.7以上的版本;
3.6及以下的版本可以正常使用,如果使用的是Python3.7以上的版本並且配置參數等都沒有問題就會出現{'172001':'網絡錯誤'}問題;
降低Python解釋器版本3.6及以下就不會出現此問題,celery任何版本都可以正常使用。
額外補充:

celery無法在Windows10 #4081 下運行任務

[2018-01-12 19:08:15,545: INFO/MainProcess] Received task: tasks.add[5d387722-5389-441b-9b01-a619b93b4702]
[2018-01-12 19:08:15,550: ERROR/MainProcess] Task handler raised error: ValueError('not enough values to unpack (expected 3, got 0)',)
Traceback (most recent call last):
  File "d:\programmingsoftware\python35\lib\site-packages\billiard\pool.py", line 358, in workloop
    result = (True, prepare_result(fun(*args, **kwargs)))
  File "d:\programmingsoftware\python35\lib\site-packages\celery\app\trace.py", line 525, in _fast_trace_task
    tasks, accept, hostname = _loc
ValueError: not enough values to unpack (expected 3, got 0)

解決方式:
使用事件池實現(“ -P eventlet”命令行選項)來解決此問題

pip install eventlet

celery -A <mymodule> worker -l info -P eventlet


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM