Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting pika.exceptions.StreamLostError: Transport indicated EOF while running python script docker image which using pika

I am using Python which is using RabbitMQ for input and output. I am able to run my script locally without any errors but when I try to Dockerize that script and run it it's giving me the following error:

Traceback (most recent call last):
File "./Kusto_connection_with_rabbitmq_2.py", line 1674, in <module>
 main()
File "./Kusto_connection_with_rabbitmq_2.py", line 1668, in main
 channel.start_consuming()
File "/usr/local/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 1865, 
  in start_consuming
self._process_data_events(time_limit=None)
File "/usr/local/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 2026, 
  in _process_data_events    self.connection.process_data_events(time_limit=time_limit)
File "/usr/local/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 824, 
  in process_data_events
self._flush_output(common_terminator)
File "/usr/local/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 523, 
in _flush_output
 raise self._closed_result.value.error
 pika.exceptions.StreamLostError: Transport indicated EOF

Below is the my Python code which is connecting to RabbitMQ:

credentials = pika.PlainCredentials(username, password)
parameters = pika.ConnectionParameters(host=Api_url,virtual_host=rmqvhost,credentials=credentials,heartbeat=0)
print (username,password)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()

channel.queue_declare(queue='test',durable=True)


channel.basic_qos(prefetch_size=0,prefetch_count=1) # this is for acknowdeging packet one by one 
channel.basic_consume(queue='test', on_message_callback=callback,auto_ack=False)


print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

My Dockerfile:

FROM python:3.8
WORKDIR /First_try
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY Kusto_connection_with_rabbitmq_2.py .
CMD ["python","./Kusto_connection_with_rabbitmq_2.py"]

I run my Docker container with

docker run <image_name>
like image 829
vishal Avatar asked Mar 30 '26 23:03

vishal


2 Answers

In my case I was connecting to the wrong port. 5672 is default for AMQP connections and 15672 is default for HTTP API. pika.ConnectionParameters wants host and port for AMQP. When I pass it 15672 I get StreamLostError: Transport indicated EOF. Pass it 5672 (or leaving port blank) and it connects without issue. In your browser, you'll want to use http(s)://<your_rabbitmq_host>:15672

like image 179
harperville Avatar answered Apr 02 '26 13:04

harperville


Maybe your connection is being interrupted, and pika is declaring your client dead. Try setting the heartbeat in your parameters to 30 or so.

like image 29
Isaac Avatar answered Apr 02 '26 13:04

Isaac