Проблема прерывистого соединения между микросервисами

У меня есть два микросервиса flask

микросервис A: он размещен на одном удаленном сервере, конечной точкой которого является https://server_ip_A:5000/

from flask import Flask, jsonify
import requests


app = Flask(__name__)

@app.route('/')
def index():
    try:
      response = requests.get("https://server_ip_B:5001/healthcheck", verify=False)
      return jsonify({'msg': response.data})
    except Exception as e:
      return jsonify({'msg': e})

app.run(host='0.0.0.0', port=5000)

микросервис B: он размещен на другом удаленном сервере, конечной точкой которого является https://server_ip_B:5001/

from flask import Flask, jsonify


app = Flask(__name__)

@app.route('/healthcheck')
def index():
    return jsonify({'msg': "running"})

app.run(host='0.0.0.0', port=5001)

Приложение dockerized и развернуто с помощью gunicorn with --worker-class=gevent и nginx

Я наблюдаю, что иногда микросервис A не может связаться с микросервисом B, хотя оба сервиса работают.

Когда микросервис A не может взаимодействовать с микросервисом B, возникает ошибка

HTTPSConnectionPool(host='server_ip_B', port=5001): Read timed out. (read timeout=60)

Если связь установлена, обычно ответ возвращается в течение 2 секунд.

Одним из решений, которое я пробовал, является повторная попытка https://server_ip:5001/healthcheck, если связь не установлена. Это работает, но увеличивает время отклика для пользователей.

В чем может быть причина? Как я могу убедиться, что между микросервисами всегда есть связь без повторных попыток, если они оба работают

Заранее спасибо!

Вернуться на верх