如何从消费者类外部发送 channel_session 数据
Posted
技术标签:
【中文标题】如何从消费者类外部发送 channel_session 数据【英文标题】:How to send channel_session data from outside the consumer class 【发布时间】:2018-07-12 05:03:42 【问题描述】:我在从消费者类之外的 channel_session 发送数据时遇到问题。
我的消费者是这样的:-
class myconsumer(AsyncWebsocketConsumer):
#all init connect function
def subscribe(self):
self.channel_Session = payload['data']
#some other functions
现在的问题是,我想通过一个称为线程的异步函数发送这个 self.channel_session。
async def sendData():
while True:
#send data
await asyio.sleep(5)
class thread(multiprocess.Process):
try:
loop = asyncio.bew_event_loop()
except Exception as e:
loop = asyncio.get_event_loop()
loop.run_until_complete(sendData())
此线程在启动服务器时启动。
问题
我找不到发送通道会话的方法
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:首先使用get_channel_layer()
获取与redis通信的活动层,然后调用group_send
调用type
参数指定的消费者方法。
from channels.layers import get_channel_layer
async def sendData():
channel_layer = get_channel_layer()
while True:
await channel_layer.group_send(
<< your_group_name_here >>,
'type': 'subscribe',
'message': 'custom message'
)
await asyncio.sleep(5)
【讨论】:
以上是关于如何从消费者类外部发送 channel_session 数据的主要内容,如果未能解决你的问题,请参考以下文章