読者です 読者をやめる 読者になる 読者になる

TwistedでDjangoを動かす

Django Python

 Twistedを勉強中です。
 とりあえず、Twistedの基本は分かった気になったので、id:mopemopeさんの「DjangoをTwistedで・・・・」という記事に触発され、僕もTwistedでDjangoを動かしてみます。
 lirisさんの「LaLaLa, TwistedでTurbuGearsが取り合えず、動いたよ」という記事が参考になりました。

from twisted.web2 import server, wsgi, http
from twisted.internet import reactor

import settings

import django
from django.core.management import validate, setup_environ, get_version
from django.core.servers.basehttp import AdminMediaHandler
from django.core.handlers.wsgi import WSGIHandler

setup_environ(settings)

from django.conf import settings
print "Validating models..."
validate()

path = django.__path__[0] + '/contrib/admin/media'
handler = AdminMediaHandler(WSGIHandler(), path)

reactor.listenTCP(8000,
                  http.HTTPFactory(server.Site(wsgi.WSGIResource(handler))))
reactor.run()


 上のコードをDjangoプロジェクトのmanage.pyと同じディレクトリに置いて、コマンドラインから実行すると、開発サーバが起動します。Django Administrationも動いているようなので、たぶん普通にTwistedをバックエンドとして使えます。
 なんか、すごく美しくないコードですが、単にTwistedをバックエンドとして使うだけならば、自分でWSGIハンドラを書く必要はなく、「Djangoのsettingsモジュールを初期化」、「DjangoのWSGIハンドラを渡してTwistedを起動」というステップでOKのはず。


 ただ、twisted.web2のDeprecationWarningが上がるのは、よく分からないです。
 うくく。