Сервер Google oauth httpd конфликтует с SABNzbd + в Python - PullRequest
2 голосов
/ 27 декабря 2011

Я пишу приложение на Python, которое взаимодействует с API Google и требует аутентификации пользователя через oauth2.

В настоящее время я настраиваю локальный сервер аутентификации для получения кода аутентификации oauth2 от oauth-сервера Google, в основном выполняю танец oauth, как this .

Обычно он работает довольно хорошо, но, думаю, я не совсем понимаю, как он взаимодействует с моими портами, потому что он с радостью назначит мой локальный сервер аутентификации для работы на порте 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

Чтобы уточнить, ниже приведены мои ожидаемые результаты

socket error: [port already in use] (or something like that)
The server is running on: port 8081
and host_name localhost

и затем переход к localhost: 8080 разрешается в SABnzbd +, а localhost: 8081 разрешается к моему серверу аутентификации.

Я получаю, однако:

the server is running on: port 8080
and host_name localhost

но при переходе на localhost: 8080 разрешается в SABNzbd +

Заранее спасибо!

...