bottle内蔵のWSGIサーバでctrl+cで止めた時に何か例外が出てる問題

bottleで何か適当にWebアプリを書いてbottle内蔵のサーバでテストして、ctrl+cで終了した時に何かexceptionが発生していた。

こんな感じで

Exception happened during processing of request from ('xxx.xxx.xx.x', xxxxxx)
Traceback (most recent call last):
  File "/usr/local/lib/python3.4/socketserver.py", line 305, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/local/lib/python3.4/socketserver.py", line 331, in process_request    self.finish_request(request, client_address)
  File "/usr/local/lib/python3.4/socketserver.py", line 344, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/local/lib/python3.4/socketserver.py", line 673, in __init__
    self.handle()
  File "/usr/local/lib/python3.4/wsgiref/simple_server.py", line 118, in handle    self.raw_requestline = self.rfile.readline(65537)
  File "/usr/local/lib/python3.4/socket.py", line 374, in readinto
    return self._sock.recv_into(b)
KeyboardInterrupt

起動したら必ず出るというわけではなく、

  • 起動してまだリクエストを飛ばさないうちに終了させると発生しない。
  • 一度でもリクエストを飛ばすと発生する。

って感じ。

いろいろ調べてみたら、ブラウザとのコネクションが残ってるから発生するみたいなことが書かれているのを発見。

10秒ほど待ってから終了させてみてと書いてあったので待って終了させると無事飛んでこなかった。