Как я могу получить IP-адрес запроса в функции regested сервера Python xmlrpc - PullRequest
2 голосов
/ 11 июля 2010

Я пишу простую программу xmlrpc на python.что-то вроде следующего:


def foo(data):

    # I want get the calling client's IP address here... How can I ?

server=SimpleXMLRPCServer.SimpleXMLRPCServer((host, port))
server.register_function(foo)

server.handle_request()

Как видно из вышесказанного, я хочу получить IP-адрес клиента в зарегистрированной функции "foo", как я могу?

1 Ответ

2 голосов
/ 11 июля 2010

Вы можете сделать это, создав подкласс сервера (и, возможно, обработчик тоже).Например:

class MyXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer):
    def process_request(self, request, client_address):
        self.client_address = client_address
        return SimpleXMLRPCServer.SimpleXMLRPCServer.process_request(
            self, request, client_address)

server=SimpleXMLRPCServer.MyXMLRPCServer((host, port))

Теперь server.client_address дает вам необходимые данные.Обратите внимание, что это прямое, короткое кодирование работает только для однопоточного случая (который вы используете в любом случае, выбирая простой сервер в своем коде) - необходимость работать с обработчиком возникает, если вы хотите использовать многопоточность.

...