我刚开始使用 Crossbar.io 来实现实时统计页面。我查看了很多代码示例,但我无法弄清楚如何做到这一点:
我有一个 Django 服务(为了避免混淆,你可以假设我在谈论 views.py 中的一个函数),我希望它在特定主题中发布消息,只要它被调用。我见过这些方法:(1)扩展 ApplicationSession和(2)使用“运行”的 Application 实例。
它们都不适合我,因为 Django 服务不存在于类中,也不作为独立的 python 文件执行,所以我找不到调用“发布”方法的方法(即我唯一想在服务器端做的事情)。
我试图获取“StatsBackend”的一个实例,它扩展了ApplicationSession,并发布了一些东西......但是StatsBackend._instance总是无(即使我执行'crossbar start'并且调用了StatsBackend.init ())。
统计后端.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)))
测试.py:
import StatsBackend
StatsBackend.update_stats(100) #Doesn't do anything, StatsBackend._instance is None