2014-09-02 2 views
4

heroku에서 RabbitMQ 추가 기능을 설정했습니다. 로컬 인스턴스에서 실행중인 메시지를 큐에 저장하고 소비하도록 내 앱을 개발 한 후이를 Heroku에 배포 했으므로 아직 성공적으로 연결할 수 없었습니다. 사용자 이름/비밀번호 & 호스트 이름/포트/가상 호스트는 모두 heroku config입니다. 사용자 이름이나 비밀번호를 변경하면 오류가 ProbableAuthenticationError으로 변경되어 인증이 최소한 정확하지만 내 보이스 또는 기타 누락 된 구성과 관련된 문제 일 가능성이 높습니다. 그래서 내 문제를 언급하지 않은 한 인터넷 검색 결과에 대해 비슷한 질문을 보지 못했습니다.ProktableAccessDeniedError 때문에 pika가있는 Heroku의 RabbitMQ에 연결할 수 없습니다.

보내기 및 사용 모두에 대해 RABBITMQ_BIGWIG_RX_URLRABBITMQ_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) 

특별히 무엇이 잘못 구성되어 있는지 알아낼 수있는 방법이 있습니까? 나는 여기서 잃어 버렸다. 미리 감사드립니다!

저는 pika 0.9.14, python 2.7.3을 실행 중입니다.

+0

아마 대부분의 가상 호스트에는 이름에''/'''이 없습니다. 기본값은''/'''이며 다른 것들은 보통 특수 문자없이 이름이 붙여집니다. '''notmyrealvhost'''. – eandersson

+0

@eandersson 당신이 옳다고 생각합니다. 나는 그것을 다른 방법으로 해결하는 것을 끝내지 만, 나는 그럴듯한 느낌을 가진다. – Stephen

+0

다른 사람이 같은 문제가있는 경우를 대비하여 기본 설명과 함께 직접 답변을 추가했습니다. – eandersson

답변

3

나는 Heroku의 환경 변수에서 URL을 구문 분석하기 위해 pika에서 URLParameters 클래스를 사용하여 문제를 해결했다.

이 문자열은 amqp://username:[email protected]:10018/notmyrealvhost과 같은 문자열을 필요에 따라 모두 구문 분석합니다. 나는 그것을 스스로함으로써 불필요하게 복잡한 것을 만들었다.

8

문제는 가상 호스트에 슬래시 문자를 추가했을 가능성이 가장 높습니다. 많은 사용자가 이것을 슬래시와 루트 디렉토리로 혼동하지만 실제로는 단지 기본 가상 호스트 이름입니다. 당신이 실제로 슬래시를 사용하여 가상 호스트 이름이없는

는 이름은 항상 당신이 관리 콘솔에 표시되는 이름, 예를 들어 동일합니다 :

  • my_virtualhost하지/my_virtualhost

URLParameters을 사용할 때 추가 슬래시를 추가하지 않았으므로 솔루션이 작동하는 것입니다.

원래 코드는 사용 URLParameters 닮은 것 :

amqp://username:[email protected]:10018/%2Fnotmyrealvhost 

위의 답변에서 언급 한 작업 버전이 슬래시가없는 동안 (%2F) 문자를.

amqp://username:[email protected]:10018/notmyrealvhost 
관련 문제