Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@niwasawa

Python で WSGI (Web Server Gateway Interface) に従ったシンプルな Web サーバで Hello World

概要

  • Python で WSGI (Web Server Gateway Interface) に従ったシンプルな Web サーバを起動する
  • Python 標準ライブラリの wsgiref を使用する
  • 検証環境: Python 3.8.5 + macOS Catalina

WSGI と wsgiref について

Web Server Gateway Interface - Wikipedia

Web Server Gateway Interface (WSGI; ウィスキー) は、プログラミング言語Pythonにおいて、WebサーバとWebアプリケーション(もしくはWebアプリケーションフレームワーク)を接続するための、標準化されたインタフェース定義である。また、WSGIから着想を得て、他の言語でも同様のインタフェースが作られた。

wsgiref --- WSGI ユーティリティとリファレンス実装 — Python 3.8.5 ドキュメント

wsgiref は WSGI 仕様のリファレンス実装で、これは Web サーバやフレームワークに WSGI サポートを加えるのに利用できます。これは WSGI 環境変数やレスポンスヘッダを操作するユーティリティ、 WSGI サーバ実装時のベースクラス、WSGI アプリケーションを提供する デモ用 HTTP サーバ、それと WSGI サーバとアプリケーションの WSGI 仕様 (PEP 3333) 準拠のバリデーションツールを提供します。

ソースコード

以下の内容を app.py というファイル名で保存する。

# Hello World な WSGI アプリケーションを書く
def application(environ, start_response):
  status = '200 OK'
  headers = [('Content-type', 'text/plain; charset=utf-8')]
  body = 'hello, world'.encode('utf-8')
  start_response(status, headers)
  return [body]

# WSGI 仕様のリファレンス実装である wsgiref を利用する
from wsgiref import simple_server

if __name__ == '__main__':

  # WSGI HTTP サーバを起動
  host = ''
  port = 8000
  app = application # WSGI アプリケーションを指定
  server = simple_server.make_server(host, port, app)
  server.serve_forever()

WSGI HTTP サーバを起動

$ python app.py

WGGI HTTP サーバにアクセス

$ curl --include http://localhost:8000/
HTTP/1.0 200 OK
Date: Sat, 29 Aug 2020 04:33:33 GMT
Server: WSGIServer/0.2 CPython/3.8.5
Content-type: text/plain; charset=utf-8
Content-Length: 12

hello, world

参考資料

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
niwasawa
迷子になりがちな地図・位置情報系プログラマ。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?