使用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
posted @ 2020-06-03 01:11  自己有自己的调调、  阅读(833)  评论(3编辑  收藏  举报