谷歌应用程序引擎标准环境w/python3&;Flask:针对(非)POST请求的高延迟

谷歌应用程序引擎标准环境w/python3&;Flask:针对(非)POST请求的高延迟,python,google-app-engine,flask,latency,Python,Google App Engine,Flask,Latency,我对我的应用程序引擎的调用有一个奇怪的问题:它们显示了一个相当高的延迟,在跟踪(谷歌云控制台)中被识别为既没有get也没有POST的调用,请参见屏幕截图 调用my/api,它们都来自不同普通web服务器上的Python代码以及Travic CI,它们显示出类似的延迟行为 用于调用/api的方法如下: def性能请求(url、参数、sslcontext): ''在循环中执行请求10次,因为中央服务器的实例可能在请求期间意外关闭,尤其是运行时间较长的实例。'' 成功=错误 消息=无 data=ur

我对我的应用程序引擎的调用有一个奇怪的问题:它们显示了一个相当高的延迟,在跟踪(谷歌云控制台)中被识别为既没有get也没有POST的调用,请参见屏幕截图

调用my
/api
,它们都来自不同普通web服务器上的Python代码以及Travic CI,它们显示出类似的延迟行为

用于调用
/api
的方法如下:

def性能请求(url、参数、sslcontext):
''在循环中执行请求10次,因为中央服务器的实例可能在请求期间意外关闭,尤其是运行时间较长的实例。''
成功=错误
消息=无
data=urllib.parse.urlencode(参数).encode('ascii')
对于范围(10)内的i:
尝试:
response=urllib.request.urlopen(url、数据、上下文=sslcontext)
返回True,响应
除:
message=f'Response from{url}在{i+1}次尝试后使用参数{parameters}从{url}返回:'+traceback.format_exc().splitlines()[-1]
返回成功、消息
奇怪的是,大多数情况下(例外情况适用),正确识别为POST的调用显示低延迟,而显示GET和POST的类似调用显示高延迟

该图很好地显示了主要有两种类型的延迟发生:一种是100ms左右的延迟,另一种是800-1000ms的延迟。较高的是那些没有标识为GET或POST的,即使调用是使用相同的方法进行的(在Python方法之上)

我在基于flask的服务器中测量服务器的内部代码执行速度,通常小于100ms


有人知道发生了什么吗?

您是否尝试使用GCP profiler?这是一个非常有用的工具,用于分析我的代码,谢谢。我不知道。但这并没有给我一个答案,因为它表明总代码执行速度平均为85毫秒,这与我的想法类似。我怀疑问题不在我的代码范围内,但不知道该去哪里查找。一方面,我建议添加登录
/api
,以注册到达端点的HTTP方法,这可能有助于了解是什么样的请求导致了这种行为,因为这可能与urllib库的问题有关。另一方面,为了完全避免这个问题,您可以显式地构造一个请求对象,自己分配正确的HTTP方法,然后将请求对象传递给urlopen。您是否尝试使用GCP profiler?这是一个非常有用的工具,用于分析我的代码,谢谢。我不知道。但这并没有给我一个答案,因为它表明总代码执行速度平均为85毫秒,这与我的想法类似。我怀疑问题不在我的代码范围内,但不知道该去哪里查找。一方面,我建议添加登录
/api
,以注册到达端点的HTTP方法,这可能有助于了解是什么样的请求导致了这种行为,因为这可能与urllib库的问题有关。另一方面,为了完全避免这个问题,您可以显式地构造一个请求对象,自己分配正确的HTTP方法,然后将请求对象传递给urlopen