Проблема прерывистого соединения между микросервисами
У меня есть два микросервиса 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, если связь не установлена. Это работает, но увеличивает время отклика для пользователей.
В чем может быть причина? Как я могу убедиться, что между микросервисами всегда есть связь без повторных попыток, если они оба работают
Заранее спасибо!