

pythonでHTTPサーバを立てる概要
pythonでLinuxサーバー上に簡易HTTPサーバーを立てる方法を説明します。
HTTPサーバを立てると、HTTPメッセージ(GETやPOST)をpythonプログラムの中で受信することができます。
例えば、チャットBOTへメッセージが届いた旨を知らせるイベントなどは、「指定された場所にHTTPメッセージを送信する」という構成になっている場合が多いです。
この構成の場合、チャットルームで、ユーザーがBOTへのメッセージが送信されると、そのこともとに、HTTPメッセージがHTTPサーバに送信されて、HTTPメッセージの受信をトリガに、別のpythonプログラムを実行するという使い方ができます。
pythonでHTTPサーバを立てる前提の環境
pythonでHTTPサーバーを立てる前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。
-
-
【python】バージョン確認の方法【→プログラミング初心者向け】
続きを見る
レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。
-
-
レンタルサーバでプログラミングする方法【→ブログのサーバでできる!】
続きを見る
pythonでHTTPサーバを立てるサンプルプログラム
ライブラリのインポート
ここでは、HTTPサーバーを扱うライブラリBaseHTTPServerをインポートします。
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
HTTPリクエストを扱うクラスの定義
ここでは、HTTPリクエストを扱うクラスを定義しています。それぞれのHTTPリクエストが来た時の処理方法をこのクラスのメソッドとして定義しています。
class S(BaseHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
self._set_headers()
self.wfile.write("<html><body><h1>GET message receive!</h1></body></html>")
def do_POST(self):
self._set_headers()
self.wfile.write("<html><body><h1>POST message receive!</h1></body></html>")
HTTPサーバを起動する関数の定義
ここでは、サーバーの立ち上げ処理を記載しています。
基本的な処理の流れは、httpdにhtttpクラスのインスタンスを取得し、そのクラスインスタンスのserve_forever()をコールすれば、HTTPサーバーが立ち上がります。
また、例としてポートは8888を指定しています。これは各自で任意のポートを指定してください。
なお、一旦httpd.serve_forever()を呼ぶとサーバー機能を常駐して提供する為、run_http_serverの戻り値は戻りません。
def run_http_server(server_class=HTTPServer, handler_class=S, port=8888):
# startup HTTP server
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print('HTTP server started....')
httpd.serve_forever()
定義した関数の実行
ここではMainの処理を記載します。サーバーを立ち上げるメソッドrun_http_server()を呼び出します。
if __name__ == '__main__':
run_http_server()