从消费者类之外的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())
此线程在启动服务器时启动。
我找不到发送该频道会话的方法
任何帮助将不胜感激。
答案 0 :(得分: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)