Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

Djangoを安易にTwistedで動かすのは根本的にわかってない証拠

まあ、黙ってたけど。

Django本家に貼られてるものもわかってない奴が書いてるんだろうなあと。
そもそもTwistedではスレッドを使わない。
使えない事はないがcallInThreadを使うのであればTwistedの利点であるNonBlocking I/Oが活かされない。
callInThreadでは単なるマルチスレッドサーバである。
pythonで書かれたマルチスレッドサーバといってもnativeなスレッドを使ってるわけではないのでむしろmod_pythonFastCGIよりも遅くなると思われる。
さらに言えばTwistedのwebモジュールはresponseがDeferになってなかったはず。
(そのためにweb2モジュールを作ってるんだと思う)
つまりresponseでブロックされてしまう可能性が高い。
さらにデータベース処理までもNI/Oしないといけない事を忘れてはいけない。
リクエスト部にNI/Oを使ったとしてもデータベース処理でブロックされてしまう。
現状だとsasyncなどを使わないといけなくなる。
やはりアクセンスさんのところにも書かれている通りTwistedで書くと全てをTwisted風に書かないといけない。

うくく。