2023年7月10日发(作者:)
python-socketio⽂档翻译(API指南)⼀、ware1.
class ware(socketio_app, wsgi_app=None, socketio_path='')⽤于的WSGI中间件。此中间件将流量分派到
应⽤程序(application),并可选地将常规HTTP流量转发给WSGI应⽤程序。参数:socketio_app # 服务端wsgi_app # 接收所有其他流量的WSGI应⽤程序。socketio_path # 应该安装应⽤程序的端点。默认值适⽤于⼤多数情况。⽰例:import socketioimport eventletfrom . import wsgi_appsio = ()app = ware(sio, wsgi_app)((('', 8000)), app) // 这⾥是监听端⼝⼆、1. 初始化Serverclass (client_manager=None, logger=False, binary=False, json=None, async_handlers=False, **kwargs)⼀个服务端。这个类实现了完全兼容的 Web服务器,⽀持websocket和long-polling传输。参数:client_manager # 将管理客户端列表的客户端管理器实例。当这被省略时,客户列表被存储在内存中的结构中,所以不能使⽤多个连接的服务端。logger # 启⽤⽇志记录设置True或传递记录器对象使⽤。禁⽤⽇志记录设置为False。默认是 False。binary # True⽀持⼆进制有效载荷,False将所有有效载荷视为⽂本。在Python 2中,如果设置为True, 则将unicode值视为⽂本,str并将 bytes值视为⼆进制。这个选项对Pythojson # ⽤于编码和解码数据包的替代json模块。⾃定义json模块必须具有dumps与loads 标准库版本兼容的功能。async_handlers # 如果设置为True,事件处理程序在不同的线程中执⾏。要同步运⾏处理程序,请设置为False。默认是False。kwargs # 底层服务器的连接参数。[具体参数请参考官⽅⽂档](/en/latest/)2.
close_room(room, namespace=None)关闭⼀个聊天室。该功能可以移除给定房间内的所有客户端。参数:room # 聊天室名称namespace # 事件的命名空间。如果省略此参数,则使⽤默认名称空间。3.
disconnect(sid,namespace = None )断开客户端。参数:sid # 客户端的会话ID。namespace # 要断开的命名空间。如果省略此参数,则使⽤默认名称空间。4.
emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None,** kwargs )向⼀个或多个连接的客户端发出⾃定义事件。注意:这⾥我们emit room的话,那么room中所有的连接的⽤户可以直接触发这个event事件。room也可以是单独的⽤户的sid,那么就只会给这个⼈传递。参数:event # 事件名称。它可以是任何字符串。事件名称 `connect`, `message`, `disconnect` 保留,不应该使⽤。data # 要发送给客户端或多个客户端的数据。数据可以是`str`,`bytes`,`list`, `dict`类型,如果是⼀个`list`或者`dict`, 数据将被序列化为JSON。room # 消息的接收者。这可以设置为客户端的会话ID来处理该客户的房间,或者由应⽤程序创建的任何⾃定义房间。如果省略该参数,则将事件⼴播给所有连接的客户端。skip_sid # ⼴播到房间或所有客户端时要跳过的客户端的会话ID。这可以⽤来防⽌邮件被发送到发件⼈。namespace # 事件的命名空间。如果省略此参数,则该事件将发送到默认名称空间。callback # 如果给定,将调⽤此函数来确认客户端已收到消息。传递给函数的参数是客户端提供的参数。回拨函数只能在寻址单个客户端时使⽤。ignore_queue # 仅在配置消息队列时使⽤。如果设置为True,该事件直接发送到客户端,⽽不通过队列。这是更⾼效的,但只有在使⽤单个服务器进程时才有效。建议始终将此5.
enter_room(sid,room,namespace = None )进⼊⼀个房间。此功能将客户端添加到⼀个房间。6. handle_request(environ,start_response )处理来⾃客户端的HTTP请求。这是应⽤程序的⼊⼝点,使⽤与WSGI应⽤程序相同的接⼝。对于典型的⽤法,这个函数是由Middleware实例调⽤的,但是在不使⽤中间件的时候可以直接调⽤。参数:environ # WSGI环境。start_response # WSGI start_response函数。该函数返回HTTP响应正⽂以字节序列传递给客户端。7.
leave_room(sid,room,namespace = None )离开房间。这个功能可以将客户端移除房间。参数:sid # 客户端的会话ID。room # 房间名称。namespace # 事件的命名空间。如果省略此参数,则使⽤默认名称空间。8.
on(event,handler = None,namespace = None )注册事件处理程序。参数:event # 事件名称。它可以是任何字符串。事件名称 'connect','message'和'disconnect'保留,不能使⽤。handler # 应该被调⽤来处理事件的函数。当没有给出这个参数时,该⽅法充当处理函数的装饰器。namespace # 事件的命名空间。如果省略此参数,则处理程序将与默认名称空间关联。⽤法⽰例:# as a decorator:@socket_('connect', namespace='/chat')def connect_handler(sid, environ): print('Connection request') if environ['REMOTE_ADDR'] in blacklisted: return False # reject# as a method:def message_handler(sid, msg): print('Received message: ', msg) (sid, 'response')socket_('message', namespace='/chat', message_handler)处理函数接收sid客户端的(会话ID)作为第⼀个参数。'connect'事件处理程序接收WSGI环境作为第⼆个参数,并且可以返回False拒绝连接。'message'⾃定义事件名称的处理程序和处理程序将接收消息有效内容作为第⼆个参数。从消息处理程序返回的任何值将传递给客户端的确认回调函数(如果存在)。该 'disconnect'处理器不采取第⼆个参数。9.
register_namespace(namespace_handler )注册名称空间处理程序对象。参数:namespace_handler # [`Namespace`](/en/latest/#ace "ace") 处理命名空间的所有事件通信的⼦类的实10.
rooms(sid,namespace = None )返回客户所在的房间。参数:sid # 客户端的会话ID。namespace # 事件的命名空间。如果省略此参数,则使⽤默认名称空间。11.
send(data, room=None, skip_sid=None, namespace=None, callback=None, **kwargs)发送消息给⼀个或多个连接的客户端。这个函数⽤名字发出⼀个事件'message'。使⽤
emit()发出⾃定义事件的名称。参数:data # 要发送给客户端或客户端的数据。数据可以是类型的str,bytes,list或dict。如果⼀个 listor dict,数据将被序列化为JSON。room # 消息的接收者。这可以设置为客户端的会话ID来处理该客户的房间,或者由应⽤程序创建的任何⾃定义房间。如果省略该参数,则将事件⼴播给所有连接的客户端。skip_sid # ⼴播到房间或所有客户端时要跳过的客户端的会话ID。这可以⽤来防⽌邮件被发送到发件⼈。namespace # 事件的命名空间。如果省略此参数,则该事件将发送到默认名称空间。callback # 如果给定,将调⽤此函数来确认客户端已收到消息。传递给函数的参数是客户端提供的参数。回拨函数只能在寻址单个客户端时使⽤。ignore_queue # 仅在配置消息队列时使⽤。如果设置为True,该事件直接发送到客户端,⽽不通过队列。这是更⾼效的,但只有在使⽤单个服务器进程时才有效。建议始终将此12.
sleep(seconds=0)使⽤适当的异步模式睡眠所需的时间。这是⼀个应⽤程序可⽤于将任务置于睡眠状态的实⽤程序功能,⽆需担⼼为选定的异步模式使⽤正确的调⽤。13.
start_background_task(target, *args, **kwargs)使⽤适当的异步模型开始后台任务。这是应⽤程序可⽤于使⽤与所选异步模式兼容的⽅法启动后台任务的实⽤程序功能参数:target # 要执⾏的⽬标函数。args # 传递给函数的参数。kwargs # 传递给函数的关键字参数。这个函数返回⼀个与Python标准库中的
Thread 类兼容的对象。这个对象的
start() ⽅法已经被这个函数调⽤。14.
transport(sid )返回客户端使⽤的传输名称。这个函数返回的两个可能的值是'polling' 和'websocket'。参数:sid # 客户端的会话三、erver1.
class erver(client_manager=None, logger=False, json=None, async_handlers=False, **kwargs)⼀个使⽤asyncio的服务器。这个类实现了完全兼容的 web服务器,⽀持websocket和长轮询传输,与Python 3.5+和asyncio框架兼容。参数:client_manager # 将管理客户端列表的客户端管理器实例。当这被省略时,客户列表被存储在内存中的结构中,所以不能使⽤多个连接的服务器。logger # 启⽤⽇志记录设置True或传递记录器对象使⽤。禁⽤⽇志记录设置为False。json # ⽤于编码和解码数据包的替代json模块。⾃定义json模块必须具有dumps与loads 标准库版本兼容的功能。async_handlers # 如果设置为True,事件处理程序在不同的线程中执⾏。要同步运⾏处理程序,请设置为False。默认是False。kwargs # 底层服务器的连接参数。 [具体参数参考](/en/latest/)2.
attach(app,socketio_path ='' )将服务器连接到应⽤程序。3.
close_room(room,namespace = None
关闭⼀个聊天室。该功能可以移除给定房间内的所有客户端。参数:room # 房间名称。namespace # 事件的命名空间。如果省略此参数,则使⽤默认名称空间。注意:这个⽅法是⼀个协程。4.
disconnect(sid,namespace = None )断开客户端。参数:sid # 客户端的会话ID。namespace # 要断开的命名空间。如果省略此参数,则使⽤默认名称空间。注意:这个⽅法是⼀个协程。5.
emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None,** kwargs )向⼀个或多个连接的客户端发出⾃定义事件。参数:event # 事件名称。它可以是任何字符串。事件名称'connect','message'和'disconnect'保留,不应该使⽤。data # 要发送给⼀个或多个客户端的数据。数据可以是类型的str,bytes,list或dict。如果⼀个 list 或者 dict,数据将被序列化为JSON。room # 消息的接收者。这可以设置为客户端的会话ID来处理该客户的房间,或者由应⽤程序创建的任何⾃定义房间。如果省略该参数,则将事件⼴播给所有连接的客户端。skip_sid # ⼴播到房间或所有客户端时要跳过的客户端的会话ID。这可以⽤来防⽌邮件被发送到发件⼈。namespace # 事件的命名空间。如果省略此参数,则该事件将发送到默认名称空间。callback # 如果给定,将调⽤此函数来确认客户端已收到消息。传递给函数的参数是客户端提供的参数。回拨函数只能在寻址单个客户端时使⽤。ignore_queue # 仅在配置消息队列时使⽤。如果设置为True,该事件直接发送到客户端,⽽不通过队列。这是更⾼效的,但只有在使⽤单个服务器进程时才有效。建议始终将此参注意:这个⽅法是⼀个协程。6.
enter_room(sid,room,namespace = None )将⼀个sid代表的客户端拉⼊⼀个聊天室。此功能将客户端添加到⼀个房间。该emit()和
send()功能可以有选择地事件报告给在⼀个房间⾥的所有的客户。参数:sid # 客户端的会话ID。room # 聊天室名称。如果房间不存在,则创建它。namespace # 事件的命名空间。如果省略此参数,则使⽤默认名称空间。7.
handle_request(*args, **kwargs)处理来⾃客户端的HTTP请求。这是应⽤程序的⼊⼝点。这个函数返回HTTP响应正⽂传递给客户端。注意:这个⽅法是⼀个协程。8.
leave_room(sid, room, namespace=None)离开房间。这个功能从房间中删除客户端。参数:sid # 客户端的会话IDroom # 聊天室名称namespace # 事件的命名空间。如果省略此参数,则使⽤默认名称空间。9. on(event,handler = None,namespace = None )注册事件处理程序。参数:event # 事件名称。它可以是任何字符串。事件名称'connect','message'和'disconnect'保留,不应使⽤。handler # 应该被调⽤来处理事件的函数。当没有给出这个参数时,该⽅法充当处理函数的装饰器。namespace # 事件的命名空间。如果省略此参数,则处理程序将与默认名称空间关联。⽰例:# as a decorator:@socket_('connect', namespace='/chat')def connect_handler(sid, environ): print('Connection request') if environ['REMOTE_ADDR'] in blacklisted: return False # reject# as a method:def message_handler(sid, msg): print('Received message: ', msg) (sid, 'response')socket_('message', namespace='/chat', message_handler)处理函数接收sid客户端的(会话ID)作为第⼀个参数。'connect'事件处理程序接收WSGI环境作为第⼆个参数,并且可以返回False到拒绝连接。'message'⾃定义事件名称的处理程序和处理程序将接收消息有效内容作为第⼆个参数。从消息处理程序返回的任何值将传递给客户端的确认回调函数(如果存在)。该 'disconnect'处理器不采取第⼆个参数。10.
register_namespace(namespace_handler )注册名称空间处理程序对象。参数:namespace_handler # [`Namespace`](/en/latest/#ace "ace") 处理命名空间的所有事件通信的⼦类的实11.
rooms(sid,namespace = None )返回sid客户所在的所有的房间。12.
send(data,room = None,skip_sid = None,namespace = None,callback = None,** kwargs )发送消息给⼀个或多个连接的客户端。这个函数⽤名字发出⼀个事件'message'。使⽤
emit()发出⾃定义事件的名称。参数:data # 要发送给⼀个或多个客户端的数据。数据可以是类型的str,bytes,list或dict。如果⼀个 listor dict,数据将被序列化为JSON。room # 消息的接收者。这可以设置为客户端的会话ID来处理该客户的房间,或者由应⽤程序创建的任何⾃定义房间。如果省略该参数,则将事件⼴播给所有连接的客户端。skip_sid # ⼴播到房间或所有客户端时要跳过的客户端的会话ID。这可以⽤来防⽌邮件被发送到发件⼈。namespace # 事件的命名空间。如果省略此参数,则该事件将发送到默认名称空间。callback # 如果给定,将调⽤此函数来确认客户端已收到消息。传递给函数的参数是客户端提供的参数。回拨函数只能在寻址单个客户端时使⽤。ignore_queue # 仅在配置消息队列时使⽤。如果设置为True,该事件直接发送到客户端,⽽不通过队列。这是更⾼效的,但只有在使⽤单个服务器进程时才有效。建议始终将此注意:这个⽅法是⼀个协程。13.
sleep(seconds=0)使⽤适当的异步模型睡眠给定的时间。14.
start_background_task(target, *args, **kwargs)使⽤适当的异步模型开始后台任务。这是应⽤程序可⽤于使⽤与所选异步模式兼容的⽅法启动后台任务的实⽤程序功能。参数:target # 要执⾏的⽬标函数。必须是⼀个协程args # 传递给函数的参数kwargs # 传递给函数的关键字参数返回值是⼀个对象。注意:这个⽅法是⼀个协程。15.
transport(sid)返回客户端使⽤的传输名称。这个函数返回的两个可能的值是'polling' 和'websocket'。参数:sid # 客户端的会话。四、class ace(namespace = None )基于类的命名空间的基类。基于类的命名空间是⼀个包含命名空间的所有事件处理程序的类。该事件处理程序与前缀类的⽅法on_,⽐如on_connect,on_disconnect, on_message,on_json,等。参数:namespace # 与该类中定义的所有事件处理函数⼀起使⽤的命名空间。如果省略此参数,则使⽤默认名称空间。2.
close_room(room,namespace = None
关闭⼀个聊天室。与_room()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。3.
disconnect(sid,namespace = None )断开客户端。与nect()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。4.
emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None )向⼀个或多个连接的客户端发出⾃定义事件。与该()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。5.
enter_room(sid,room,namespace = None )进⼊⼀个聊天室。与该_room()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。6.
leave_room(sid,room,namespace = None )离开房间。与该_room()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。7.
rooms(sid,namespace = None )返回给定sid客户所在的所有房间。与该()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。8.
send(data,room = None,skip_sid = None,namespace = None,callback = None )发送消息给⼀个或多个连接的客户端。与该()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。9.
trigger_event(event,* args )将事件分派给适当的处理程序⽅法。在最常见的⽤法中,这个⽅法不会被⼦类重载,因为它将事件路由到⽅法。但是,如果需要特殊的调度规则,或者需要捕获所有事件的单个⽅法,则可以重写此⽅法。五、class amespace1.
class amespace(namespace = None )基于asyncio类的名称空间的基类。基于类的命名空间是⼀个包含命名空间的所有事件处理程序的类。该事件处理程序与前缀类的⽅法on_,⽐如on_connect,on_disconnect, on_message,on_json,等。这些可以是常规函数或协程。参数:namespace # 与该类中定义的所有事件处理函数⼀起使⽤的命名空间。如果省略此参数,则使⽤默认名称空间。2.
close_room(room,namespace = None )关闭⼀个聊天室。与该_room()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。注意:这个⽅法是⼀个协程。3.
disconnect(sid,namespace = None )断开客户端。与该nect()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。注意:这个⽅法是⼀个协程。4.
emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None )向⼀个或多个连接的客户端发出⾃定义事件。与该()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。注意:这个⽅法是⼀个协程。5.
enter_room(sid,room,namespace = None )进⼊⼀个房间。与该_room()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。6.
leave_room(sid,room,namespace = None )将给定sid的⽤户移除房间。与该_room()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。7.
rooms(sid,namespace = None )返回客户所在的房间。与该()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。8.
send(data,room = None,skip_sid = None,namespace = None,callback = None )发送消息给⼀个或多个连接的客户端。与该()⽅法唯⼀的区别是,如果namespace没有给出参数,则使⽤与该类关联的名称空间。注意:这个⽅法是⼀个协程。9.
trigger_event(event,* args )将事件分派给适当的处理程序⽅法。在最常见的⽤法中,这个⽅法不会被⼦类重载,因为它将事件路由到⽅法。但是,如果需要特殊的调度规则,或者需要捕获所有事件的单个⽅法,则可以重写此⽅法。注意:这个⽅法是⼀个协程。六、nager 类管理客户端连接。这个班跟踪所有客户和他们所在的房间,以⽀持消息⼴播。该类使⽤的数据存储在内存结构中,仅适⽤于单个进程服务。更复杂的存储后端可以通过⼦类来实现。1.
close_room(room, namespace)从房间中删除所有参与者。2.
connect(sid,namespace )将客户端连接注册到名称空间。3.
disconnect(sid,namespace )从命名空间注册客户端断开连接。4.
emit(event,data,namespace,room = None,skip_sid = None,callback = None,** kwargs )将消息发送到单个客户端,⼀个房间或连接到命名空间的所有客户端。5. enter_room(sid,namespace,room )添加⼀个客户端到⼀个房间。6.
get_namespaces()⽤活动的命名空间名称返回⼀个迭代。7.
get_participants(namespace,room )返回⼀个房间⾥的积极参与者迭代。8.
get_rooms(sid,namespace )返回客户所在的房间。9.
initialize()在收到第⼀个请求之前调⽤。⼦类可以在这⾥添加它们的初始化代码。10.
leave_room(sid,namespace,room
从聊天室中移除⼀个客户端。11.
pre_disconnect(sid,namespace )将客户端置于未连接列表中。这允许客户端数据结构在调⽤断开连接处理程序时出现,但仍然认识到客户端即将离开的事实。12.
trigger_callback(sid,namespace,id,data )调⽤应⽤程序回调。七、class Manager1.
class Manager(channel ='socketio',write_only = False )管理附加到发布/订阅后端的客户列表。这是⼀个基类,它允许多个服务器共享客户端列表,服务器通过发布/订阅后端来传递事件。pub / sub后端的使⽤还允许连接到后端的任何客户端发送发送到客户端的事件。实际的后端必须由⼦类来实现,这个类只提供⼀个pub / sub通⽤框架。参数:channel - 服务器发送和接收通知的频道名称2.
emit(event,data,namespace = None,room = None,skip_sid = None,callback = None,** kwargs )将消息发送到单个客户端,⼀个房间或连接到命名空间的所有命名空间。此⽅法将消息传递给通过消息队列连接的所有服务器。参数与在()。中相同。⼋、class anager1.
class anager(url ='amqp:// guest:guest @ localhost:5672 //',channel ='socketio',write_only = False )使⽤kombu进⾏进程间消息传递的客户端管理者。该类使⽤RabbitMQ,Redis或kombu⽀持的任何其他消息传递机制实现跨多个进程的事件共享的客户端管理器后端。要使⽤kombu后端,请Server按以下步骤初始化实例:url = 'amqp://user:password@hostname:port//'server = (client_manager=anager(url))参数:url # * 后端消息传递队列的连接URL。例如连接URL是`'amqp://guest:guest@localhost:5672//'`与`'redis://localhost:6379/'`分别对的RabbitMQ和Redis的。有关如何构建连接UR* **频道** - 服务器发送和接收通知的频道名称。在所有服务器中必须相同。write_only # 如果设置为ot True,则只初始化为发出事件。的缺省False初始化类⽤于发射和接收。九、class anager1.
class anager(url ='redis:// localhost:6379/0',channel ='socketio',write_only = False )Redis的客户端管理者。这个类实现了⼀个Redis后端,⽤于跨多个进程的事件共享。只是作为⼀个例⼦来说明如何构建⼀个⾃定义后端,因为kombu后端完全可以⽀持Redis消息队列。要使⽤Redis后端,请Server按以下步骤初始化实例:url = 'redis://hostname:port/0'server = (client_manager=anager(url))参数:url # Redis服务器的连接URL。对于在同⼀主机上运⾏的默认Redis存储,请使⽤redis://。channel # 服务器发送和接收通知的频道名称。在所有服务器中必须相同。write_only # 如果设置为ot True,则只初始化为发出事件。的缺省False初始化类⽤于发射和接收。⼗、anager类管理asyncio服务器的客户端管理者。1.
close_room(room, namespace)从房间中移除所有参与者。注意:这个⽅法是⼀个协程。2.
connect(sid, namespace)将客户端连接注册到名称空间。3.
disconnect(sid, namespace)从命名空间注册客户端断开连接。4. emit(event, data, namespace, room=None, skip_sid=None, callback=None, **kwargs)将消息发送到单个客户端,⼀个房间或连接到命名空间的所有客户端。注意:这个⽅法是⼀个协程。5.
enter_room(sid, namespace, room)添加⼀个客户端到⼀个房间。6.
get_namespaces()⽤活动的命名空间名称返回⼀个迭代。7.
get_participants(namespace, room)返回⼀个房间⾥的活跃的参与者迭代。8.
get_rooms(sid, namespace)返回客户所在的所有房间。9.
initialize()在收到第⼀个请求之前调⽤。⼦类可以在这⾥添加它们的初始化代码。10.
leave_room(sid, namespace, room)从客房中删除⼀个客户端。11. pre_disconnect(sid, namespace)将客户端置于将要断开连接的(to-be-disconnected )列表中。这允许客户端数据结构在调⽤断开连接处理程序时出现,但仍然认识到客户端即将离开的事实。12.
trigger_callback(sid, namespace, id, data)调⽤应⽤程序回调。注意:这个⽅法是⼀个协程。⼗⼀、class edisManager1.
class edisManager(url ='redis:// localhost:6379/0',channel ='socketio',write_only = False )基于Redis的asyncio服务器客户端管理器。这个类实现了⼀个Redis后端,⽤于跨多个进程的事件共享。只是作为⼀个例⼦来说明如何构建⼀个⾃定义后端,因为kombu后端完全可以⽀持Redis消息队列.要使⽤Redis后端,请Server按以下步骤初始化实例:server = (client_manager=edisManager( 'redis://hostname:port/0'))参数:url # Redis服务器的连接URL。对于在同⼀主机上运⾏的默认Redis存储,请使⽤redis://。channel # 服务器发送和接收通知的频道名称。在所有服务器中必须相同。write_only # 如果设置为True,则只初始化为发出事件。的缺省False初始化类⽤于发射和接收。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688930646a184703.html
评论列表(0条)