Ya.*_*Ya. 5 multithreading asynchronous http synchronous
这适用于通过 HTTP 相互通信的非面向用户的后端应用程序。我想知道是否有关于同步 HTTP 请求最大超时的指南。例如,假设一个请求最多可能需要 10 分钟才能完成。我可以简单地在客户端创建一个工作线程,然后在工作线程中同步调用请求吗?或者我应该异步实现请求,返回 HTTP 202 Accepted 并在服务器端分离一个工作线程以完成请求并找出一种方法将结果发回,假设是通过消息传递框架?我担心的一个问题是让插座长时间保持打开状态是否安全?
套接字连接可以保持打开状态(没有活动)的时间取决于网络基础设施(的质量)。
等待服务器答复的客户端 HTTP 请求会导致打开的套接字连接,一段时间内没有任何数据通过该连接。代理服务器可能会在 5 分钟后决定关闭此类非活动连接。同样,防火墙可以决定关闭打开时间超过 30 分钟的连接,无论是否处于活动状态。
但由于您位于后端,因此可以测试这些情况(只需让处理请求的服务器线程在给出答案之前休眠一定时间)。一旦验证套接字连接没有被不同的网络组件关闭,就可以安全地依赖套接字连接保持打开状态。请记住,尽管网络电缆可能会被拔掉并且服务器可能会崩溃 - 您始终需要一种策略来处理中断。
至于同步和异步:都是可行的,都有优点和缺点。但什么适合您,不仅仅取决于套接字连接的可靠性。
| 归档时间: |
|
| 查看次数: |
9525 次 |
| 最近记录: |