获取 pika.exceptions.StreamLostError:传输指示 EOF 在运行使用 pika 的 python 脚本 docker 映像时

Posted

技术标签:

【中文标题】获取 pika.exceptions.StreamLostError:传输指示 EOF 在运行使用 pika 的 python 脚本 docker 映像时【英文标题】:Getting pika.exceptions.StreamLostError: Transport indicated EOF while running python script docker image which using pika 【发布时间】:2022-01-22 19:32:04 【问题描述】:

我有 python,它使用 rabbitmq 进行输入和输出,我能够在本地系统上运行该文件而没有任何错误,但是当我尝试 dockerize 该脚本并运行它时,它给了我以下错误。

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

下面是我连接rabbitmq的python代码

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()

【问题讨论】:

您确定可以从您的 docker 容器中访问 rabbitmq 吗?你能指定你尝试 dockerize 这个脚本的完整代码列表吗? FROM python:3.8 WORKDIR /First_try COPY requirements.txt 。运行 pip install -r requirements.txt 复制 Kusto_connection_with_rabbitmq_2.py 。 CMD ["python","./Kusto_connection_with_rabbitmq_2.py"] 我的 docker 文件 谢谢。您能否指定如何运行您的 docker? docker run image_name 【参考方案1】:

我想你的问题是你无法从你的 docker 容器中访问 rabbitmq。

Here 是使用 docker-compose 从 python 中使用 rabbitmq 的简单示例,您应该尝试依赖此示例来实现您的解决方案。

【讨论】:

以上是关于获取 pika.exceptions.StreamLostError:传输指示 EOF 在运行使用 pika 的 python 脚本 docker 映像时的主要内容,如果未能解决你的问题,请参考以下文章

java反射获取属性值

Shell 获取路径

iOS 获取文件大小

根据日期字符串获取星期几,日期获取星期,时间获取星期,js获取星期

js如何获取时间点?

iOS 获取设备的各种信息的方法