将net.Dialer的超时设置和Connection的截止日期设置为相同的行为吗?

问题描述

在Go中,我从Dialer创建连接(带有超时):

from django.core.exceptions import ObjectDoesNotExist
.
.
.
   if model.objects.count() > 0:
       try:
          obj = model.objects.get(u_name_id = self.u_name_id)
          print("hell")
          raise ValidationError("You can only create 1 profile ")
       except ObjectDoesNotExist:
          pass # this is not problem for you because this user have not object

但是,我还可以设置连接的截止日期:

dt<-data.frame(Start=c(5,15,22),End=c(10,21,38))

这是多余的,还是在此处设置超时和截止日期有功能上的差异?

解决方法

这些完全不同。

net.Dialer用于建立连接。 最后期限(或超时)适用于建立连接。分别在TimeoutDeadline字段中引用文档:

超时是拨盘等待拨号的最长时间 连接完成。

最后期限是拨号后的绝对时间点 失败。

另一方面,net.Conn保持已建立的连接。 超时适用于连接上的读/写操作net.Conn的文档中也明确指出了这一点:

SetDeadline设置与 连接。这等效于同时调用SetReadDeadline和 SetWriteDeadline。

请注意,这是一组常见的超时设置(其中之一):一个用于建立连接,另一个用于对已建立的连接进行操作。