Dies ist eine Methode zum schnellen Erstellen eines HTTP-Servers für eine kleine Funktionsprüfung.
CallbackServer.py
#!/usr/bin/env python
import requests
from BaseHTTPServer import HTTPServer
from BaseHTTPServer import BaseHTTPRequestHandler
import urlparse
def start(port, callback):
def handler(*args):
CallbackServer(callback, *args)
server = HTTPServer(('', int(port)), handler)
server.serve_forever()
class CallbackServer(BaseHTTPRequestHandler):
def __init__(self, callback, *args):
self.callback = callback
BaseHTTPRequestHandler.__init__(self, *args)
def do_GET(self):
parsed_path = urlparse.urlparse(self.path)
query = parsed_path.query
self.send_response(200)
self.end_headers()
result = self.callback(query)
message = '\r\n'.join(result)
self.wfile.write(message)
return
Es definiert eine Klasse, die eine Rückruffunktion basierend auf HTTPServer festlegt. Bitte installieren Sie Anfragen mit pip etc.
Wie man es benutzt ist so.
simple_test.py
#!/usr/bin/env python
# coding:utf-8
import sys
import CallbackServer
def callback_method(query):
return ['Hello', 'World!', 'with', query]
if __name__ == '__main__':
port = sys.argv[1]
CallbackServer.start(port, callback_method)
Wenn Sie nur die Portnummer erhalten und die Portnummer und die Methode (callback_method
) übergeben, die bei einem HTTP-Zugriff aufgerufen wird, wird der HTTP-Server ohne Erlaubnis hochgefahren.
callback_method
empfängt eine GET-Abfrage (hinter? In der URL) als Argument und gibt die als Antwort zurückgegebene Zeichenfolge mit return zurück.
Wenn Sie eine Liste von Zeichenfolgen zurückgeben, wird diese von CRLF ohne Erlaubnis unterbrochen.
Anlaufen
./simple_test.py 12345
Wenn Sie danach über den Browser auf "http: // localhost: 12345 /? Hoge = 123" zugreifen
Hello
World!
with
hoge=123
Wird ausgegeben.
Recommended Posts