我想用SocketIO在服務器上的特定事件發生廣播消息,現在我用這個代碼瓶和socket.io廣播
,我叫gevent.spawn(loop_send_queued_messages, server)
啓動我的服務器
當客戶端將數據發送到「/發出」一切正常:
- 我看到從01
broadcasting
消息 - 我看到
broadcast_msg
然而broadcast_msg
消息,如果在服務器的另一部分我導入broadcast
功能,我用它從某個端點(例如用戶發送的文件後),我只有看到從調用broadcast
第一broadcasting
消息,但似乎該消息是不正確添加到隊列,因爲broadcast_msg
從未被稱爲
有人能告訴我在燒瓶用戶SocketIO的最好的辦法,從廣播我的服務器代碼中的任何位置?
[編輯]考慮到下面的評論,我這個
broadcasting newDatasetAvailable features 4363892432 scripts.socket_routes
127.0.0.1 - - [2013-12-11 15:56:07] "POST /datastore/features HTTP/1.1" 200 115 0.003130
broadcasting msg refreshData 4363648208 socket_routes
127.0.0.1 - - [2013-12-11 15:56:07] "POST /emit HTTP/1.1" 200 115 0.000540
broadcast_msg msg (u'refreshData',)
這樣一個scripts.socket_routes
,另一種是socket_routes
的/emit
端點在同一個文件定義爲websocket_queue
,和POST
到/datastore
使用另一個文件中的broadcast
方法,並以如下方式導入:
from scripts.socket_routes import broadcast
,其中結構爲:
scripts/
__init__.py
socket_routes.py # where websocket_queue and broadcast are defined
dataset_routes.py # where broadcast is imported
確實這兩個隊列是不一樣的,但我認爲我只使用絕對導入('import module.submodule'而不是'import .submodule'),我如何更改導入或確保對象是共享?我以爲Python中的'import'不會重新導入文件,如果它已經被導入no? – oulipo
打印了哪些模塊名稱?您的代碼相對於此模塊的佈局以及您要導入的位置是什麼?你的進口報表是什麼樣的? –
請參閱我編輯的導入 – oulipo