Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
SockJS сервер (в виде tornado-sockjs, что являлось одной из причин, по которой мы сделали свой выбор в сторону этого продукта)
self._connection.stream = ZMQStream(socket, self.io_loop)?except Exception, e:
# Handle exception
pass
Так и не понял, зачем тут ZeroMQ. Можно же у Tornado сервера сделать «секретное» HTTP API по которому принимать информацию о новых событиях.Безусловно, предложенный Вами подход имеет права на жизнь. Но в случае с “секретным” HTTP API нам бы пришлось каким-либо образом обеспечивать “секретность”. Я не думаю, что полученное решение получилось бы намного более легким, чем текущее решение с ZeroMQ.
Ну ок, решили что ZeroMQ всё-же удобнее… Но зачем вам понадобился ZeroMQ Proxy??? Какую он функцию выполняет?ZeroMQ Proxy использовался как прокси между django и tornado. Возможно, что я не совсем точно понял Ваш вопрос, не могли бы Вы уточнить, как именно в данной ситуации Вы бы использовали ZeroMQ в подобной ситуации?
localhost. Так же и секретное API можно повесть слушать только на localhost на отдельном порту.class SockJSMyRouter(SockJSRouter):
def __init__(self, *args, **kw):
super(SockJSMyRouter, self).__init__(*args, **kw)
socket = context.socket(zmq.SUB)
socket.setsockopt(zmq.SUBSCRIBE, "")
socket.bind("tcp://127.0.0.1:XXXX") # !!!!!!!!!!!!!!!
self._connection.stream = ZMQStream(socket, self.io_loop)
import zmq
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.connect("XXXX")
socket.send("your message")
socket.close()
Так и не понял, зачем тут ZeroMQ. Можно же у Tornado сервера сделать «секретное» HTTP API по которому принимать информацию о новых событиях.
Разработка системы синхронизации в реальном времени с использованием SockJS, Django, Tornado и ZeroMQ