ちょっとした動作確認にさくっとHTTPサーバを作る場合の方法です.
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
HTTPServerをベースにしてコールバック関数を設定しているクラスを定義しています.requestsはpip等でインストールしてください.
使い方はこんな感じ.
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)
ポート番号だけ受け取って,ポート番号とHTTPアクセスがあった場合に呼び出されるメソッド(callback_method
)を渡せば後は勝手にHTTPサーバが上がってくれます.
callback_method
は引数にGETクエリ(URLの?より後ろ側)を受け取って,Responseとして返す文字列をreturnで返します.
文字列のリストを返せば勝手にCRLFで改行されます.
起動は
./simple_test.py 12345
という感じで実行して,後はブラウザからhttp://localhost:12345/?hoge=123
とかにアクセスすると
Hello
World!
with
hoge=123
が出力されます.