为什么当我的Python服务器请求尝试从redis存储中获取子请求时会停留在等待状态(在nginx openresty中)?

我正在使用srcache从我的Flask服务器缓存请求到Java服务器。现在,当我尝试使用Postman,Jmeter或通过ngrok隧道从Flask服务器路由的nginx侦听的8080发送请求时,似乎没有任何问题。第一个请求会抛出缓存MISS,而后续请求会有一个缓存HIT。然而,当我直接在localhost:5000上使用我的Flask服务器时,请求会停留在等待状态,似乎永远无法解决,直到我使用openresty reload,当它抛出一个内部服务器错误时。:?

对此有任何想法吗?

这里是Python服务器触发请求的地方

 def json_output(text):
 url = "http://localhost:8080/?properties={0}".format(ann)
 payload = text

 print "Payload",payload
 r = requests.post(url, data=payload)

 try:
 data = json.loads(r.text.decode("utf8"))
 except Exception as e:
 data = {"sentences":[]}
 return data

这里是openresty nginx上的缓存部分:

 srcache_response_cache_control  off;
 srcache_ignore_content_encoding  off;
 set_escape_uri  $escaped_key $key;
 srcache_fetch  GET /redis $key;
 srcache_store  PUT /redis2 key=$key&exptime=60000;
 srcache_methods GET POST;
 srcache_fetch_skip $skip_fetch;
 default_type  application/json;
 proxy_pass  http://127.0.0.1:9001;

如果请求通过ngrok隧道路由,则相同的代码运行良好

点赞