同步HTTP请求的最大合理超时

时间:2015-11-14 19:05:24

标签: multithreading http asynchronous synchronous

这适用于通过HTTP相互通信的非面向用户的后端应用程序。我想知道是否存在同步HTTP请求的最大超时的准则。例如,假设请求最多可能需要10分钟才能完成。我可以简单地在客户端上创建一个工作线程,并在工作线程中同步调用请求吗?或者我应该异步实现请求,返回HTTP 202 Accepted并关闭服务器端的工作线程以完成请求并找出一种方法来发回结果,可以通过消息传递框架推测? 我担心的一个问题是长时间保持套接字打开是否安全?

1 个答案:

答案 0 :(得分:1)

套接字连接可以保持打开多长时间(没有活动)取决于网络基础结构的(质量)。

等待来自服务器的应答的客户端HTTP请求导致打开套接字连接,而没有任何数据通过该连接一段时间。代理服务器可能决定在5分钟后关闭此类非活动连接。同样,防火墙可以决定关闭打开超过30分钟,活动与否的连接。

但是因为你在后端,所以可以测试这些情况(只需让处理请求的服务器线程在给出答案之前休眠一段时间)。一旦确认套接字连接未被不同的网络组件关闭,依靠套接字连接保持打开是安全的。请记住,虽然可以拔掉网络电缆并且服务器可能崩溃 - 但您始终需要一种策略来处理中断。

对于同步和异步:两者都是可行的,都有优点和缺点。但适合您的不仅仅取决于套接字连接的可靠性。

相关问题