#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