私のアプリケーションはtwisted「バックエンドサーバー」とdjango「ミドルウェア」で構成されています。ねじれた部分は、データベースにアクセスするために.tac fileに設定されたcollection of servicesであり、wwwまたはxmlでコンテンツを提供します。 djangoの部分は、ウェブサイト上のユーザとのやり取りをすべて処理します。どのようにDjangoからの通知をねじれに送信するには?
ねじれたWebサービスは、私がcanonical wayと思われるものでDjangoのWSGIアプリケーションをインスタンス化します。
# .../wsgi/app.py:
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
# .../web_service.py:
# (twisted imports...)
from wsgi.app import application
class WebServer(Resource):
def __init__(self):
Resource.__init__(self)
self.wsgi_resource = WSGIResource(reactor,
reactor.getThreadPool(),
application)
今、私はツイストにDjangoの一部から、たとえば、ユーザがログインしたことの通知を送信する必要がありますサービスの1つに理想的です。私は目的のためにdjango signalを使用しようとしています。信号作品を送信するが、私は本当に信号のためのターゲットとして機能するようにねじれたオブジェクトへの参照を取得する方法が表示されない:
- サービスは、すべての
app.tac
でインスタンス化され、それがインポートすることができていないようですこれらのオブジェクトはそのファイルから取得するか、ツイストされたアプリケーションが実行されている間はそれらのオブジェクトへの参照を再取得します。 #twisted
IRCチャンネルでは、私がそれをインスタンス化するときに私のシグナルのターゲットになるはずのサービスへの参照を渡すアドバイスを得ましたが、上のコードスニペットが示すように、django app単にWSGIHandler
オブジェクトであり、サービス参照を何とかそこに注入することができたとしても、アプリ内からアクセスする方法はわかりません。また、そのアプローチは、バックエンドとミドルウェアをむしろ強く結びつけることになります。これは、シグナルが最初に防止しようとするものです。
DjangoからTwistedに通知を送信するにはどうすればよいですか?