Ste*_*hen 4 python heroku rabbitmq pika
我只是在heroku中设置了一个RabbitMQ插件.在开发我的应用程序以排队并使用在本地实例上运行的消息之后,我将其部署到Heroku并且还无法成功连接.用户名/密码和主机名/端口/ vhost均来自heroku config.如果我更改用户名或密码,错误会更改为ProbableAuthenticationError使我认为身份验证至少是正确的,但可能是我的vhost或其他一些缺少配置的问题.我没有在SO上看到任何类似的问题,也没有看到一小时的谷歌搜索没有解决我的问题.
我已经尝试了发送和消费的环境变量RABBITMQ_BIGWIG_RX_URL和RABBITMQ_BIGWIG_TX_URL环境变量,但似乎没有任何组合可行.下面是我尝试连接的代码.
url = 'small-laurel-24.bigwig.lshift.net'
port = 10019
vhost = '/notmyrealvhost'
credentials = pika.PlainCredentials('username', 'password')
parameters = pika.ConnectionParameters(url, port, vhost, credentials=credentials)
connection = pika.BlockingConnection(parameters)
Run Code Online (Sandbox Code Playgroud)
有什么我缺少的东西或任何方法来弄清楚具体配置错误的是什么?我在这里不知所措.非常感谢提前!
我正在运行pika 0.9.14,python 2.7.3.
问题很可能是您在虚拟主机中添加了正斜杠字符.许多用户将此与正斜杠作为根目录混淆,但它实际上只是默认的虚拟主机名.
除非您使用正斜杠实际命名虚拟主机,否则名称将始终与您在管理控制台中看到的名称相同,例如:
这就是为什么您的解决方案有效,因为您在使用URLParameters时没有添加额外的正斜杠.
使用URLParameters,原始代码看起来像这样:
amqp://username:password@small-laurel-24.bigwig.lshift.net:10018/%2Fnotmyrealvhost
Run Code Online (Sandbox Code Playgroud)
虽然您在上面的答案中提到的工作版本没有正斜杠(%2F)字符.
amqp://username:password@small-laurel-24.bigwig.lshift.net:10018/notmyrealvhost
Run Code Online (Sandbox Code Playgroud)
我最终通过使用URLParameterspika 上的类从 Heroku 的环境变量解析 URL 来解决我的问题。
这需要字符串
amqp://username:password@small-laurel-24.bigwig.lshift.net:10018/notmyrealvhost并根据需要解析所有内容。我自己做这件事让事情变得不必要地复杂化。