啟動容器指令:
sudo docker run --name rabbit -d -p 5672:5672 -p 15672:15672 rabbitmq:management
producer程式碼:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('rabbit'))
channel = connection.channel()
channel.queue_declare(queue='task_queue', durable=True)
message = 'hello!'
channel.basic_publish(exchange='',
routing_key='task_queue',
body=message,
)
print(" [x] Sent %r" % message)
connection.close()
報錯訊息:
Traceback (most recent call last):
File "producer_queue.py", line 31, in <module>
main()
File "producer_queue.py", line 13, in main
connection = pika.BlockingConnection(pika.ConnectionParameters('rabbit'))
File "/usr/local/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 339, in __init__
self._process_io_for_connection_setup()
File "/usr/local/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 374, in _process_io_for_connection_setup
self._open_error_result.is_ready)
File "/usr/local/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 395, in _flush_output
raise exceptions.ConnectionClosed()
pika.exceptions.ConnectionClosed
我看同事和網路上的程式碼 跟我的一樣 但都可以直接在容器外使用服務
用另一種方式 掛載程式碼到一個python容器中 也可以正常使用
sudo docker run -v $PWD:/code -w /code --link=rabbit:rabbit -it python:2 bash
但是這樣太麻煩了 也不合理
不知道哪裡有問題 解
世界只因有你2017-05-27 17:46:12
1.如果宿主機存取的話,你使用127.0.0.1 或localhost試一試,先檢查rabbitmq是否啟動成功,然後檢查連接埠服務,也檢查一下日誌
2.我推薦使用docker-compose編排服務,也推薦使用python掛載到容器中使用。