Performance upgrade.
This commit is contained in:
		
							parent
							
								
									0e6fbd523c
								
							
						
					
					
						commit
						3594ac1f59
					
				@ -10,6 +10,10 @@ class ChannelMemberService(BaseService):
 | 
				
			|||||||
        channel_member["new_count"] = 0
 | 
					        channel_member["new_count"] = 0
 | 
				
			||||||
        return await self.save(channel_member)
 | 
					        return await self.save(channel_member)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    async def get_user_uids(self, channel_uid):
 | 
				
			||||||
 | 
					        async for model in self.mapper.query("SELECT user_uid FROM channel_member WHERE channel_uid=:channel_uid", {"channel_uid": channel_uid}):
 | 
				
			||||||
 | 
					            yield model["user_uid"]
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    async def create(
 | 
					    async def create(
 | 
				
			||||||
        self,
 | 
					        self,
 | 
				
			||||||
        channel_uid,
 | 
					        channel_uid,
 | 
				
			||||||
 | 
				
			|||||||
@ -16,9 +16,8 @@ class SocketService(BaseService):
 | 
				
			|||||||
            try:
 | 
					            try:
 | 
				
			||||||
                await self.ws.send_json(data)
 | 
					                await self.ws.send_json(data)
 | 
				
			||||||
            except Exception as ex:
 | 
					            except Exception as ex:
 | 
				
			||||||
                print(ex, flush=True)
 | 
					 | 
				
			||||||
                self.is_connected = False
 | 
					                self.is_connected = False
 | 
				
			||||||
            return True
 | 
					            return self.is_connected
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async def close(self):
 | 
					        async def close(self):
 | 
				
			||||||
            if not self.is_connected:
 | 
					            if not self.is_connected:
 | 
				
			||||||
@ -43,7 +42,6 @@ class SocketService(BaseService):
 | 
				
			|||||||
        self.users[user_uid].add(s)
 | 
					        self.users[user_uid].add(s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async def subscribe(self, ws, channel_uid, user_uid):
 | 
					    async def subscribe(self, ws, channel_uid, user_uid):
 | 
				
			||||||
        return
 | 
					 | 
				
			||||||
        if channel_uid not in self.subscriptions:
 | 
					        if channel_uid not in self.subscriptions:
 | 
				
			||||||
            self.subscriptions[channel_uid] = set()
 | 
					            self.subscriptions[channel_uid] = set()
 | 
				
			||||||
        s = self.Socket(ws, await self.app.services.user.get(uid=user_uid))
 | 
					        s = self.Socket(ws, await self.app.services.user.get(uid=user_uid))
 | 
				
			||||||
@ -57,10 +55,12 @@ class SocketService(BaseService):
 | 
				
			|||||||
        return count
 | 
					        return count
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async def broadcast(self, channel_uid, message):
 | 
					    async def broadcast(self, channel_uid, message):
 | 
				
			||||||
        async for channel_member in self.app.services.channel_member.find(
 | 
					        try:
 | 
				
			||||||
            channel_uid=channel_uid
 | 
					            async for user_uid in self.services.channel_member.get_user_uids(channel_uid):
 | 
				
			||||||
        ):
 | 
					                print(user_uid, flush=True)
 | 
				
			||||||
            await self.send_to_user(channel_member["user_uid"], message)
 | 
					                await self.send_to_user(user_uid, message)
 | 
				
			||||||
 | 
					        except Exception as ex:
 | 
				
			||||||
 | 
					            print(ex, flush=True)
 | 
				
			||||||
        return True
 | 
					        return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async def delete(self, ws):
 | 
					    async def delete(self, ws):
 | 
				
			||||||
 | 
				
			|||||||
@ -273,7 +273,7 @@ class RPCView(BaseView):
 | 
				
			|||||||
                    async with Profiler():
 | 
					                    async with Profiler():
 | 
				
			||||||
                        await rpc(msg.json())
 | 
					                        await rpc(msg.json())
 | 
				
			||||||
                except Exception as ex:
 | 
					                except Exception as ex:
 | 
				
			||||||
                    print(ex, flush=True)
 | 
					                    print("Deleting socket", ex, flush=True)
 | 
				
			||||||
                    await self.services.socket.delete(ws)
 | 
					                    await self.services.socket.delete(ws)
 | 
				
			||||||
                    break
 | 
					                    break
 | 
				
			||||||
            elif msg.type == web.WSMsgType.ERROR:
 | 
					            elif msg.type == web.WSMsgType.ERROR:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user