Crossbar.io を使用して、ライブ統計ページを実装し始めました。多くのコード例を見てきましたが、これを行う方法がわかりません:
私は Django サービスを持っており (混乱を避けるために、view.py の関数について話していると想定してください)、呼び出されるたびに特定のトピックでメッセージを公開したいと考えています。私はこれらのアプローチを見てきました: (1) ApplicationSession を拡張し、(2) "runned" である Application インスタンスを使用します。
Djangoサービスはクラス内に存在せず、スタンドアロンのpythonファイルとしても実行されないため、それらのどれも機能しません。そのため、「公開」メソッドを呼び出す方法が見つかりません(つまり、サーバー側でやりたいことだけです)。
ApplicationSession を拡張した「StatsBackend」のインスタンスを取得して何かを公開しようとしたのですが... StatsBackend._instance は常に None です (「crossbar start」を実行して StatsBackend.init ( ) を呼び出しても)。
StatsBackend.py:
from twisted.internet.defer import inlineCallbacks
from autobahn import wamp
from autobahn.twisted.wamp import ApplicationSession
class StatsBackend(ApplicationSession):
_instance = None
def __init__(self, config):
ApplicationSession.__init__(self, config)
StatsBackend._instance = self
@classmethod
def update_stats(cls, amount):
if cls._instance:
cls._instance.publish('com.xxx.statsupdate', {'amount': amount})
@inlineCallbacks
def onJoin(self, details):
res = yield self.register(self)
print("CampaignStatsBackend: {} procedures registered!".format(len(res)))
test.py:
import StatsBackend
StatsBackend.update_stats(100) #Doesn't do anything, StatsBackend._instance is None