我正在尝试从dev服务器向公司内部的服务器发出一个简单的http请求。我发现,根据源/目标服务器的不同,我可能会,也可能不会,被迫使用目标服务器的限定名,比如srvdestination.com.company.world
,而不仅仅是srvdestination
。你知道吗
我可以这样做,但我不明白为什么我的DB连接工作?你知道吗
假设我有srvorigin
。现在,要发出http请求,必须使用限定名srvdestination.com.company.world
。但是,对于数据库连接,具有非限定名称的连接字符串就足够了psycopg.connect(host='srvdestination', ...)
我知道协议是不同的,但是psycopg2
如何解析实名呢?你知道吗
首先,这完全取决于操作系统的名称解析子系统是如何配置的。如果您在Unix上(您没有指定),则由
/etc/resolv.conf
控制。在这里,您可以向操作系统提供一个搜索列表:如果一个名称没有“足够”的点(该数字是可配置的),则添加一个后缀以重试解析。你知道吗用于执行HTTP请求的库可能不会查询操作系统的名称解析,而是自行执行其DNS解析。在这种情况下,它只能使用您提供的信息(但也可以重用OS
/etc/resolv.conf
和其中的信息),因此需要使用全名。 相反,psycopg2
可以使用操作系统解析机制,因此可以很好地处理“短”名称。你知道吗两个库都应该有关于如何处理主机名的文档。。。否则你需要研究他们的源代码。我猜
psycopg2
是默认libpq
标准库的包装器,如果我没弄错的话,它是用C编写的,因此肯定使用标准OS解析过程。你知道吗我可以理解这种差异带来的好奇,但不管怎样,我的建议是在shell和等效程序上键入命令时保持短名称(即使这样也可能有问题),但在程序和配置文件中始终使用FQDN(完全限定域名)。你会避免很多问题。你知道吗
相关问题 更多 >
编程相关推荐