Windows の signal handling

ネットワークが不安定で気づいたんだけど、Windows って I/O なんかでブロックしている間は signal handler に制御が移んないのな。ブロックする処理が終了した直後に signal handler に制御が移るかんじ。accept がそんな挙動を示すことは知っていたけど、なんかブロックする処理全般がそんな感じだ。まぁ、あくまで Python から見た場合で、実際のところどうなかは知らないけど。
で、Python の urllib2 とか使うと blocking IO になってしまってしかも timeout も指定なしなので、処理が戻ってこないし SIGINT にも反応しないしという状態。仕方が無いので asyncore を使って非同期 HTTP クライアントなんかを書く。