蟒蛇。 Django的。持久的socket.io连接

时间:2012-11-14 07:29:55

标签: python django socket.io

有没有办法连接到socket.io服务器并保持连接活动,就像js客户端一样,来自django后端?

这样的代码:

from socketIO_client import SocketIO
from django.conf import settings

def trigger_socket():
   socket_client = SocketIO(settings.SIO_HOST, settings.SIO_PORT)
   socket_client.emit('cool_task', {})

工作正常,但在每个任务发出时打开连接。有什么办法可以避免吗?或者我错过了关于套接字的东西?

UPD FYI 实际上,使用socket.io来在服务器之间进行通信 - 这是一个愚蠢的想法。使用tornadorpc / xmlrpclib进行此类任务 - 仅在js客户端保留socket.io。

2 个答案:

答案 0 :(得分:2)

简介:

你所描述的方式是不可能的。如果你想使用django连接到socket.io之类的东西,请看看gevent.io

详细说明:

当使用传统的Web服务器进行部署时,由于进程/线程模型,Django不适合处理长时间的连接任务。要处理长时间连接,需要采用一些事件驱动的Web服务器,例如[gunicorn] [2]

答案 1 :(得分:0)

有可能:

from socketIO_client import SocketIO
from django.conf import settings

def trigger_socket():
    with SocketIO(settings.SIO_HOST, settings.SIO_PORT) as socketIO:
        socketIO.emit('cool_task', {})
        socketIO.wait(seconds=0)