У меня странная проблема с вызовами в мой движок приложений: они показывают довольно высокую задержку для вызовов, которые идентифицируются в Trace (Google Cloud Console) как ни GET, ни POST, пожалуйста, смотрите скриншот.
Звонки выполняются на мой /api
, и все они исходят из кода Python на разных обычных веб-серверах, а также из Travi c CI, которые демонстрируют похожее поведение задержки .
Метод, используемый для совершения вызовов на /api
, таков:
def performRequest(url, parameters, sslcontext):
'''Perform request in a loop 10 times, because the central server’s instance might shut down unexpectedly during a request, especially longer running ones.'''
success = False
message = None
data = urllib.parse.urlencode(parameters).encode('ascii')
for i in range(10):
try:
response = urllib.request.urlopen(url, data, context=sslcontext)
return True, response
except:
message = f'Response from {url} with parameters {parameters} after {i+1} tries: ' + traceback.format_exc().splitlines()[-1]
return success, message
Странная часть заключается в том, что большую часть времени (за исключением случаев) вызовы, идентифицированные правильно, как POST, показывают низкая задержка, и аналогичные вызовы, не показывающие ни GET, ни POST, не показывают высокую задержку.
График хорошо показывает, что в основном происходят две категории задержек: одна линия около 100 мс, а другая линия 800-1000 мс. Более высокие - те, которые не определены как GET или POST, даже если вызовы выполняются с использованием тех же методов (выше Python метод).
Я измеряю скорость выполнения внутреннего кода сервера в моем flask - основанный на сервере, и обычно он меньше 100 мс.
Кто-нибудь знает, что происходит?