填写broker_url时认证密码中可能含有(*,?, /,$)等特殊字符,启动celery任务时会报错,例如:
# 连接redis的认证密码为:my/pass$word?1234
# celery -A mytasks worker --loglevel=info
......
ValueError: invalid literal for int() with base 10: 'my'
此问题的解决方法是把这个密码encode编码处理下。这里使用urllib库,处理的代码如下:
from urllib import quote_plus
PASSWORD=quote_plus('my/pass$word?1234')
broker_url = 'redis://:{}@myhostname:port'.format(PASSWORD)
网友评论