我正在使用 LWP::UserAgent 与多台服务器上的 Web 服务进行通信;一次联系一个服务器。每个响应可能最多需要 30 分钟才能完成,因此我将 LWP 超时设置为 30 分钟。
不幸的是,如果服务器根本无法访问(例如,网络服务器已关闭),同样的超时也适用。因此,我的应用程序等待 30 分钟等待未运行的服务器。
设置两个单独的超时是否可行?
- 一个短的,等待建立连接。
- 一旦建立连接,一个更长的等待响应。
我正在使用 LWP::UserAgent 与多台服务器上的 Web 服务进行通信;一次联系一个服务器。每个响应可能最多需要 30 分钟才能完成,因此我将 LWP 超时设置为 30 分钟。
不幸的是,如果服务器根本无法访问(例如,网络服务器已关闭),同样的超时也适用。因此,我的应用程序等待 30 分钟等待未运行的服务器。
设置两个单独的超时是否可行?
如果服务器不可访问,则相同的超时不会“也适用”。超时选项以非常特定的方式工作:
如果在超时秒内没有观察到与服务器的连接上的任何活动,则请求被中止。这意味着完成事务和 request() 方法实际返回所需的时间可能会更长。
只要正在传递数据,就不会触发超时。您可以使用回调函数(请参阅文档的请求方法部分)来检查数据传输已经进行了多长时间,并在需要时完全退出。