[uWSGI] Sharing connection to socket.io?
Roberto De Ioris
roberto at unbit.it
Wed Jul 20 19:32:56 CEST 2011
Il giorno 20/lug/2011, alle ore 16.52, Szymon Kosok ha scritto:
> 2011/7/20 Roberto De Ioris <roberto at unbit.it>:
>> Il giorno 20/lug/2011, alle ore 16.24, Szymon Kosok ha scritto:
>>> I've asked this question on StackOverflow but I think it's better ask
>>> here, so I copy&paste question.
>>> We are trying to integrate Socket.io with our website. All messages
>>> are sent with uWSGI workers (Django). My problem is, that every
>>> message does all connection magic. It looks now like that:
>>> Request -> HTTP Handshake with Socket.io -> Websocket connection ->
>>> Data send -> Connection close
>>> And repeat for every message that need to be send to socket.io. It's
>>> far from ideal. Sometimes there are 3-4 messages queued / request. Is
>>> there way to share socket connection within requests with uWSGI? I
>>> don't need sharing between workers, just only within all requests
>>> processed by particular worker. Or maybe there are other solutions for
>>> that problem?
>>> Best regards.
>> Hi, can you post the code you use to connect to the socket.io server ?
> Sure. :)
> I'm using websocket-client
> http://pypi.python.org/pypi/websocket-client/0.4 and based on that
> module my class: http://dpaste.com/572402/ (because socket.io needs
> some funky handshake via http).
Looks like you can make a connection at the startup of your app and reuse it in each requests, but you will need to send a 'keepalive/ping' packet to leave it open.
I have not tried it (i will try tomorrow and eventually i will send you an example) but you can create the connection in a @post_fork hook and leave it open with a @timer
(do not be afraid if you got nothing, it is an abstraction of other systems:
Roberto De Ioris
More information about the uWSGI