RabbitMQ завершается с помощью EOF, когда я загружаю данные из API, но если я сохраняю их на диск и запускаю с результатом, он работает

#rabbitmq #pika #python-pika

#кролик #пика #питон-пика

Вопрос:

В настоящее время я загружаю некоторые данные в фрейм данных, извлекаю данные из Интернета для нескольких тикеров (ценных бумаг) и хочу просмотреть эти ценные бумаги и создать сообщения в определенной очереди.

У меня есть следующий код, который должен работать так, как задумано.

 bps = get_latest_breakpoints(as_of_date=as_of_date) # returns a pandas DataFrame  tickers = [str(ticker).replace(" ", '') for ticker in bps.index]  for ticker in tickers:  body = json.dumps({'ticker': ticker})  print(body)  # MAYBE DISPATCH ON A QUEUE  process_twitter_channel.basic_publish(  routing_key=QUEUE_GET_TICKER_TWEETS,  exchange=QUEUE_GET_TICKER_TWEETS,  body=body,  properties=BasicProperties(  delivery_mode=2, # make message persistent  )  )  

================== ВЫХОД ======================

 {"ticker": "ADSK"} 2021-11-29 16:44:57,063 Socket EOF; lt;socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('127.0.0.1', 53220), raddr=('127.0.0.1', 25672)gt; 2021-11-29 16:44:57,073 Transport indicated EOF. 2021-11-29 16:44:57,074 connection_lost: StreamLostError: ('Transport indicated EOF',) 2021-11-29 16:44:57,078 Unexpected connection close detected: StreamLostError: ('Transport indicated EOF',) Traceback (most recent call last):  File "marketreader/actions/create_breakpoint_reports.py", line 70, in lt;modulegt;  run_breakpoint_reports()  File "marketreader/actions/create_breakpoint_reports.py", line 59, in run_breakpoint_reports  process_twitter_channel.basic_publish(  File "/venv/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 2247, in basic_publish  self._flush_output()  File "/venv/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 1335, in _flush_output  self._connection._flush_output(lambda: self.is_closed, *waiters)  File "/venv/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  

Буууут, если вместо того, чтобы пытаться отправлять сообщения в очереди, я сохраню их в a .файл json, и вместо того, чтобы получать «горячие» данные из API, я загружаю ранее созданный файл, он работает правильно. Я не могу понять, почему это происходит, так как у меня нет оснований полагать, что существует конфликт между API, к которому я обращаюсь, и локальным сервером rabbitmq