python德扬戈。持久套接字.io连接

python德扬戈。持久套接字.io连接,python,django,socket.io,Python,Django,Socket.io,有没有办法像js客户端那样从django后端连接到socket.io服务器并保持连接的活动状态 代码如下: 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', {}

有没有办法像js客户端那样从django后端连接到socket.io服务器并保持连接的活动状态

代码如下:

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仅供参考实际上,使用socket.io在服务器之间进行通信是一个愚蠢的想法。对此类任务使用tornadorpc/xmlrpclib-仅在js客户端保留socket.io

简介:

这不可能像你描述的那样。如果您想使用django连接到socket.io之类的东西,请查看

详细说明:

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

可以使用:

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)

我在芹菜任务中使用这个连接。我可以为主芹菜流程定义连接吗?对不起,我不熟悉芹菜。但一般来说,如果你想重复使用一个连接来处理多个事情,你可以创建一个连接和一个任务队列,设置一个队列处理程序,并在新任务到来时将其推送到队列中。这就是芹菜的用途。好的,我将在当前任务中查看gunicorn。不确定是否将在动物园中添加另一个库。:)