pythonのgeventにAssertionErrorとか言われて詰みかけた話

前回に引き続いてgeventのpywsgi。

順調に遊んでいたら、こんなことを言われました。

assert not self.headers_sent
AssertionError

うーん? ヘッダーを送ってないよってか? start_responseはしたよ?

と思いつつログさかのぼってみたら

TypeError: an integer or string of size 1 is required

なんて事が書いてあった。 整数か文字か・・・文字列返してるんだけどな・・・。

いろいろ試してみて分かった。

単純にunicode型に対応していないようです、この子。 適当な文字コードにエンコードしてやるとすんなり動きます。

そんなわけで、gevent使うときはエンコードに気をつけましょう。 ま、python3.x使えよって話かもしれない。

2014-05-10 追記

適当に書いちゃったけど、geventはpython3.xに対応してないっぽい?