結論:geventを直で立ち上げて80番で待つ
結局geventを直で動かすだけしかないのかよ....
そもそも今 Apache + mod_wsgi + django って組み合わせなんだけど、これにwebsocket乗っけるってだけの事ができない。
pywebsocketとかいうGoogleの中の人製のやつは、なぜかmod_python使って動くというクソ仕様。
色々事情があるのはわかるんだけど、それじゃぁ普通のPython使ってwebアプリ作ってるやつの9割は撃沈だろ。
んで、mod_wsgiとmod_python両方一個のapacheでなんとか動かないか試行錯誤してたんだが,,,,これおそらく未来がなさそうなので1日ぐらい試したあとでやめた。
で、pythonでwebsocketっていうと、他の選択肢って「geventwebsocket」ってやつぐらいしか実際にはない。もちろん自前でwebsocket鯖を書くという方法もあるが、それならこれ使った方がましだろ。
んで、使ってるとなんかこれもapacheから呼ぶのは無理っぽいのよね..
apache使うならpywebsocketしかなさげ。
じゃぁどうするかっていうとgunicornとか、nginxとか、apache以外の計量鯖使って起動するって選択肢がありそうだったのよ。
んでじゃぁ今時だし「よーしパパ nginxとgunicornでgeventwebsocket + cassandraまで使ってスタイリッシュパイソニスタ(謎)」になっちゃうぞ!とか意気込んだ訳ですよ。
んでgevent単体だったらhttpとwebsocketと両方プロトコルハンドルできてるからこれならいけるよねー、、とか思ってnginxまで入れて「んー、なんかこれhtttpは捌けるけどwebsocketのプロトコル来たらさばけなくね?」と思って見てて
「できないよ」
という文言を発見してしまったorz
正確に言うと、どうもpatchか何かが転がってて入れればnginxでもwebsocketをgunicornのほうへリバースプロキシしてくれそうな気配はあった。けどこれ以上はもうしんどい。
動くよ、って感じのソースは
この辺。
やる気が出たらもう一度チャレンジすると思うが....今はもういいや
んで、結局、 pythonでgeventのwsgi的なスクリプト直でたたいて80番で待ってもらうことにした。
ローテクだが、動くんだからこっちの方がいい。
なんだかなー
0 件のコメント:
コメントを投稿