我刚开始使用Crossbar.io来实现实时统计页面.我看了很多代码示例,但我无法弄清楚如何执行此操作:
我有一个Django的服务(为避免混淆,你可以假设I'm谈论views.py功能),我想它在一个特定的主题发布消息,每当它被调用.我见过这些方法:(1)扩展ApplicationSession和(2)使用"runned"的Application实例.
它们都不适合我,因为Django服务不在一个类中,也不是作为一个独立的python文件执行,所以我找不到一种方法来调用"发布"方法(即我唯一想在服务器端做的事情).
我试图让"StatsBackend",延伸ApplicationSession的实例,并发布一些信息,但StatsBackend._instance是无总是(甚至当我执行"横梁开始"和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)))
Run Code Online (Sandbox Code Playgroud)
test.py:
import StatsBackend
StatsBackend.update_stats(100) #Doesn't do anything, StatsBackend._instance is None
Run Code Online (Sandbox Code Playgroud)