Я хочу использовать SocketIO для передачи сообщений, когда определенное событие на сервере происходит, прямо сейчас я использую этот кодКолба и socket.io широковещательного
и я называю gevent.spawn(loop_send_queued_messages, server)
при запуске моего сервера
, когда клиент посылает данные в «/ испускают» все работает отлично:
- Я вижу
broadcasting
сообщений отbroadcast
- Я вижу
broadcast_msg
сообщений отbroadcast_msg
Однако, если в другой части сервера импортировать функцию broadcast
и я использую его с некоторой конечной точки (например, после того, как пользователь отправил файл), я только увидеть первое broadcasting
сообщение от вызова broadcast
, но мне кажется, что сообщение не правильно добавляется в очередь, потому что broadcast_msg
никогда не называют
Может кто-нибудь сказать мне, что лучший способ для пользователя SocketIO в термосе, чтобы сделать вещание из любое место в моем коде сервера?
[EDIT] Принимая во внимание замечание ниже, у меня есть этот
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
, и a 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'), как я могу изменить свой импорт или убедиться, что объект общий? Я думал, что «import» в Python не будет переименовывать файл, если он уже был импортирован нет? – oulipo
Какие имена модулей были напечатаны?Какова структура вашего кода относительно этого модуля и где вы его импортируете? Как выглядят ваши заявления импорта? –
См. Мои изменения для импорта – oulipo