Все работает нормально, пока рабочий процесс не используется более 2 минут.
Затем RabbitMQ регистрирует сообщение
Код: Выделить всё
rabbit_1 | 2018-12-29 15:51:21.573 [error] closing AMQP connection (172.18.0.1:50058 -> 172.18.0.4:5672):
rabbit_1 | missed heartbeats from client, timeout: 60s
Код: Выделить всё
[2018-12-29 16:51:26,526] ERROR in app: Exception on /sentiment [POST] Traceback (most recent call last): File "/home/konrad/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request() File "/home/konrad/anaconda3/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args) File "/home/konrad/anaconda3/lib/python3.6/site-packages/flask_restplus/api.py", line 325, in wrapper
resp = resource(*args, **kwargs) File "/home/konrad/anaconda3/lib/python3.6/site-packages/flask/views.py", line 84, in view
return self.dispatch_request(*args, **kwargs) File "/home/konrad/anaconda3/lib/python3.6/site-packages/flask_restplus/resource.py", line 44, in dispatch_request
resp = meth(*args, **kwargs) File "/home/konrad/Documents/ubuntu-docs/python-dev/crypto-ticker-sentiment/sentinet/evaluation_server/routes/sentiment.py", line 25, in post
prediction = predict_sentiment(queue, text) File "/home/konrad/Documents/ubuntu-docs/python-dev/crypto-ticker-sentiment/sentinet/evaluation_server/services/evaluation.py", line 17, in predict_sentiment
task_result = task.get() File "/home/konrad/anaconda3/lib/python3.6/site-packages/celery/result.py", line 224, in get
on_message=on_message, File "/home/konrad/anaconda3/lib/python3.6/site-packages/celery/backends/async.py", line 188, in wait_for_pending
for _ in self._wait_for_pending(result, **kwargs): File "/home/konrad/anaconda3/lib/python3.6/site-packages/celery/backends/async.py", line 255, in _wait_for_pending
on_interval=on_interval): File "/home/konrad/anaconda3/lib/python3.6/site-packages/celery/backends/async.py", line 56, in drain_events_until
yield self.wait_for(p, wait, timeout=1) File "/home/konrad/anaconda3/lib/python3.6/site-packages/celery/backends/async.py", line 65, in wait_for
wait(timeout=timeout) File "/home/konrad/anaconda3/lib/python3.6/site-packages/celery/backends/rpc.py", line 63, in drain_events
return self._connection.drain_events(timeout=timeout) File "/home/konrad/anaconda3/lib/python3.6/site-packages/kombu/connection.py", line 301, in drain_events
return self.transport.drain_events(self.connection, **kwargs) File "/home/konrad/anaconda3/lib/python3.6/site-packages/kombu/transport/pyamqp.py", line 103, in drain_events
return connection.drain_events(**kwargs) File "/home/konrad/anaconda3/lib/python3.6/site-packages/amqp/connection.py", line 491, in drain_events
while not self.blocking_read(timeout): File "/home/konrad/anaconda3/lib/python3.6/site-packages/amqp/connection.py", line 496, in blocking_read
frame = self.transport.read_frame() File "/home/konrad/anaconda3/lib/python3.6/site-packages/amqp/transport.py", line 243, in read_frame
frame_header = read(7, True) File "/home/konrad/anaconda3/lib/python3.6/site-packages/amqp/transport.py", line 426, in _read
raise IOError('Socket closed') OSError: Socket closed
Я добавил параметр --without-heartbeat при создании рабочего, но это не сработало.
Поможет ли отключение пульса в RabbitMQ?
Обновление
Я нашел это в RabbitMQ [doc][ 1], но там не указано, как этого добиться.
Как отключить Heartbeats Heartbeats можно отключить, установив
интервал тайм-аута равным 0 как на стороне клиента, так и на сервере.
В качестве альтернативы можно использовать очень высокое значение (скажем, 1800 секунд) на
обе концах, чтобы эффективно отключить контрольные сигналы, поскольку доставка кадров будет слишком редко, чтобы иметь практическое значение.
Никакая практика не рекомендуется, если вместо этого не используются пакеты поддержки активности TCP
с достаточно низким периодом обнаружения бездействия
Обновление 2
Я добавил heartbeat = 0 в файл rabbitmq.conf, но он по-прежнему не работает не работает.
[1]: https://www.rabbitmq.com/heartbeats.html
Подробнее здесь: https://stackoverflow.com/questions/539 ... h-rabbitmq