Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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
Python http请求中的名称解析_Python_Dns_Psycopg2 - Fatal编程技术网

Python http请求中的名称解析

Python http请求中的名称解析,python,dns,psycopg2,Python,Dns,Psycopg2,我正在尝试从一个dev服务器向公司内部的服务器发出一个简单的http请求。我发现,根据源/目标服务器的不同,我可能会被迫使用目标服务器的限定名称,比如srvdestinition.com.company.world,而不仅仅是srvdestinition 我同意,但我不明白我的DB连接是怎么工作的 假设我有srvorigin。现在,要发出http请求,我必须使用限定名srvdestinition.com.company.world。但是,对于数据库连接,具有非限定名称的连接字符串就足够了。psy

我正在尝试从一个dev服务器向公司内部的服务器发出一个简单的http请求。我发现,根据源/目标服务器的不同,我可能会被迫使用目标服务器的限定名称,比如
srvdestinition.com.company.world
,而不仅仅是
srvdestinition

我同意,但我不明白我的DB连接是怎么工作的


假设我有
srvorigin
。现在,要发出http请求,我必须使用限定名
srvdestinition.com.company.world
。但是,对于数据库连接,具有非限定名称的连接字符串就足够了。
psycopg.connect(host='srvdestinition',…)
我知道协议是不同的,但是
psycopg2
如何解析真名?

首先,这一切都取决于操作系统的名称解析子系统是如何配置的。如果您在Unix上(您没有指定),则这由
/etc/resolv.conf
管理。在这里,您可以向操作系统提供一个搜索列表:如果一个名称没有“足够”的点(该数字是可配置的),那么将添加一个后缀以重试解析

用于执行HTTP请求的库可能不会查询操作系统的名称解析,而是自行进行DNS解析。在这种情况下,它只能使用您提供的信息(但它也可以重复使用OS
/etc/resolv.conf
和其中的信息),因此需要使用全名。 相反,
psycopg2
可能使用操作系统解析机制,因此可以很好地处理“短”名称

这两个库都应该有关于如何处理主机名的文档。。。否则你需要研究他们的源代码。我猜
psycopg2
是默认
libpq
标准库的包装,如果我没有弄错的话,它是用C编写的,因此肯定使用标准操作系统解析过程

我可以理解这种差异带来的好奇,但无论如何,我的建议是在shell和等效程序上键入命令时保持短名称(即使这样也可能有问题),但在程序和配置文件中始终使用FQDNs(完全限定域名)。你会避免很多问题