Python の web framework である bottle を cygwin 上で使ってみた.おおむね良好.Python 3.6 で動かしている.
しかし,javascript から fetch() で呼ぶと,答が帰ってこない.cygwin でなく Windows にしてみても同じ.そのあといろいろアクセスすると無反応になったりして,どうもよくわからない.なんとなくではあるが,bottle が使っている wsgi webserver の reference implementation のせいではないかという気がする.
サーバを paste に変えてみたところ,ちゃんと動いているふうである.ただ,paste は開発が続いているのだろうか? 更新日が古いような気がする.とりあえず,pip3 install paste としたら入ったので,まあ良いのかもしれないが.インストールされた paste のコードに一箇所修正が必要だった.(大きなものをつくるとまだあるだろうという気がする)
--- /usr/lib/python3.6/site-packages/paste/httpserver.py~ 2017-11-25 13:40:29.185137200 +0900 +++ /usr/lib/python3.6/site-packages/paste/httpserver.py 2017-11-25 13:52:30.916417900 +0900 @@ -306,7 +306,7 @@ for chunk in result: self.wsgi_write_chunk(chunk) if not self.wsgi_headers_sent: - self.wsgi_write_chunk('') + self.wsgi_write_chunk(b'') finally: if hasattr(result,'close'): result.close()
アプリケーションのコードの方は,run()
に,server='paste'
という引数を加えればよい.debug=True
だの reloader=True
だのも一緒に指定できるようである.