建行到家rpc连接超时

Python012

建行到家rpc连接超时,第1张

系统没有及时升级。

建行到家rpc显示请求超时,主要原因就是系统没有及时升级,部分组件没有响应,必须更新。

rpc(RemoteProcedureCall)是远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

系统未升级,网络不通畅

1、系统未升级。显示请求超时主要原因就是系统未及时升级,部分组件没有响应,必须更新。

2、网络不通畅。网络不通畅导致连接请求超时,检查网络再去连接。

考虑基于HTTP的RPC,或者HTTP服务器主动通知客户端的机制,就是HTTP Long-Polling,意思就是客户端发起一个长连接,服务器阻塞忍住不响应直到:

超时,比如5秒后,我们给客户端响应一个keepalive,意思是现在还没有啥事,请继续polling。

拿到结果,这个可能是任何时候,比如300毫秒、1100毫秒、2300毫秒拿到一个事件,响应给客户端,实现了有事件异步通知。

这样客户端和服务器之间RPC的效率就非常高,只有在有事件时才会通知。但是,实际上还有一种情况需要处理:

当客户端断开连接,比如客户端设置了3秒钟TCP请求超时,或者因为客户端Crash时OS回收了FD等等,这个时候服务器应该要终止polling事务,停止获取事件。因为如果这个时候获取了事件,那么如何处理这个事件?只能丢弃,如果客户端再次发起请求,就拿不到这个事件了。

问题就来了,如何在HTTP Handler中探测客户端断开?例如: