我剛開始使用Crossbar.io來實現一個實時統計頁面。我已經看了很多代碼示例,但我不知道如何做到這一點:Crossbar.io:如何使用Django服務發佈關於主題的消息?
我有一個Django服務(爲了避免混淆,您可以假設我正在討論視圖中的函數。 py),我希望它在特定主題中發佈消息,只要它被調用。我見過這些方法:(1)Extending ApplicationSession和(2)using an Application instance that is "runned"。
它們都不適合我,因爲Django服務不在類的內部,也不作爲獨立的python文件執行,所以我沒有辦法調用「publish」方法(這是我想在服務器端做的唯一事情)。
我試圖讓「StatsBackend」,延伸ApplicationSession的實例,併發布一些信息,但StatsBackend._instance是無總是(甚至當我執行「橫樑開始」和StatsBackend。初始化()是所謂的)。
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
我注意到,當StatsBackend被一個新的Python解釋器加載時,_instance將始終爲None。 – 2014-10-07 18:26:18