Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 同步HTTP请求的最大合理超时_Multithreading_Http_Asynchronous_Synchronous - Fatal编程技术网

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

Multithreading 同步HTTP请求的最大合理超时,multithreading,http,asynchronous,synchronous,Multithreading,Http,Asynchronous,Synchronous,这适用于通过HTTP相互通信的非面向用户的后端应用程序。我想知道是否有一个同步HTTP请求的最大超时准则。例如,假设一个请求最多需要10分钟才能完成。我可以简单地在客户机上创建一个工作线程,并在工作线程中同步调用请求吗?或者我应该异步实现该请求,以返回HTTP 202 Accepted并在服务器端剥离一个工作线程来完成该请求,并找出一种方法将结果发送回去,这可能是通过消息传递框架实现的? 我关心的一个问题是让套接字长时间保持打开是否安全?套接字连接可以保持打开(无活动)多长时间取决于网络基础设施

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

套接字连接可以保持打开(无活动)多长时间取决于网络基础设施的(质量)

等待服务器应答的客户端HTTP请求会导致一段时间内没有任何数据通过该连接的开放套接字连接。代理服务器可能会在5分钟后决定关闭此类非活动连接。类似地,防火墙可以决定关闭打开时间超过30分钟的连接(活动或不活动)

但是,由于您在后端,因此可以测试这些情况(只需让处理请求的服务器线程在给出答案之前休眠一段时间)。一旦验证套接字连接未被不同的网络组件关闭,就可以安全地依靠套接字连接保持打开状态。请记住,网络电缆可能会被拔掉,服务器可能会崩溃——您将始终需要一种策略来处理中断


至于同步和异步:两者都是可行的,各有优缺点。但是什么对你来说是正确的不仅仅取决于套接字连接的可靠性。

这是一个非常深刻的问题。一个重要的问题是,您需要确保服务器线程不会以某种方式丢失,可能是通过重新启动或其他类似的方式丢失。