Google API oauth httpd服务器与Python中的SABNzbd+冲突

2024-06-28 15:21:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个Python应用程序,它与googleapi交互,并且需要通过oauth2进行用户身份验证。

我目前正在设置一个本地身份验证服务器,以从Google的oauth服务器接收oauth2身份验证代码,基本上是像this一样执行oauth舞蹈。

它通常工作得很好,但我想我不明白它是如何与我的端口交互的,因为它会很高兴地将我的本地身份验证服务器分配到8080端口上运行,即使其他应用程序(在我的测试中,SABNzbd++)正在使用该端口。

我认为将端口分配给使用的端口号会导致错误并重试。我做错了什么(或者,或者,SABNzbd++做了什么,使得它监听8080端口的事实不被我的应用程序隐藏?)

相关代码如下。

import socket
import BaseHTTPServer
from oauth2client.tools import ClientRedirectServer, ClientRedirectHandler

port_number = 0
host_name = 'localhost'
for port_number in range(8080,10000):
    try:
        httpd = ClientRedirectServer((host_name, port_number),
                                   ClientRedirectHandler)
    except socket.error, e:
        print "socket error: " + str(e)
        pass
    else:
        print "The server is running on: port " + str(port_number)
        print "and host_name " + host_name
        break

为了澄清,以下是我的预期结果

^{pr2}$

然后去本地主机:8080解析至SABnzbd+,以及本地主机:8081解析到我的身份验证服务器。

我得到了,无论如何:

the server is running on: port 8080
and host_name localhost

但是去本地主机:8080解析至SABNzbd+

提前谢谢!


Tags: 端口代码nameimport服务器身份验证应用程序host