由于某些原因,我们会在密码中加入一些特殊字符,如标点符号等,来加强密码的强度,当在rabbitmq中使用这类包含问号等特殊字符的密码时,celery却遇到了处理错误的问题。
我们编写一个broker的url如下,我们需要连接一个rabbitmq服务器,使用的用户名为admin,密码为mypass?1234:
1 | amqp://admin:mypass?1234@test.knktc.com// |
把这个URL用于以下的代码中:
1 | from celery import Celery |
一运行就会报以下的错误:
1 | ValueError: invalid literal for int() with base 10: 'mypass' |
原因就是因为密码中带有问号,导致了程序出错。
此时解决的方案就是把这个密码用urlencode处理下,处理后的代码如下:
1 | from celery import Celery |
这次就可以欢快地运行了。