cancel tasks in loop
This commit is contained in:
		
							
								
								
									
										36
									
								
								stream.py
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								stream.py
									
									
									
									
									
								
							@@ -160,25 +160,27 @@ class UpstreamHandler():
 | 
				
			|||||||
                    futures.append(task)
 | 
					                    futures.append(task)
 | 
				
			||||||
                done = False
 | 
					                done = False
 | 
				
			||||||
                for future in asyncio.as_completed(futures):
 | 
					                for future in asyncio.as_completed(futures):
 | 
				
			||||||
                    if done:
 | 
					                    try:
 | 
				
			||||||
                        future.cancel()
 | 
					                        result = await future
 | 
				
			||||||
 | 
					                        resp = result.resp
 | 
				
			||||||
 | 
					                    except Exception as e:
 | 
				
			||||||
 | 
					                        logger.info(e)
 | 
				
			||||||
                    else:
 | 
					                    else:
 | 
				
			||||||
                        try:
 | 
					                        done = True
 | 
				
			||||||
                            result = await future
 | 
					                        new_url = str(resp.url)
 | 
				
			||||||
                            resp = result.resp
 | 
					                        if new_url.lower().startswith("https://consent.youtube.com"):
 | 
				
			||||||
                        except Exception as e:
 | 
					                            self.upstream = src
 | 
				
			||||||
                            logger.info(e)
 | 
					                            self.upstream_safe = urllib.parse.quote(src)
 | 
				
			||||||
                        else:
 | 
					                        else:
 | 
				
			||||||
                            done = True
 | 
					                            self.upstream = new_url
 | 
				
			||||||
                            new_url = str(resp.url)
 | 
					                            self.upstream_safe = urllib.parse.quote(new_url)
 | 
				
			||||||
                            if new_url.lower().startswith("https://consent.youtube.com"):
 | 
					                        self.proxy = result.current_proxy
 | 
				
			||||||
                                self.upstream = src
 | 
					                        proxies[self.provider] = result.current_proxies
 | 
				
			||||||
                                self.upstream_safe = urllib.parse.quote(src)
 | 
					                        break
 | 
				
			||||||
                            else:
 | 
					                for future in futures:
 | 
				
			||||||
                                self.upstream = new_url
 | 
					                    if not future.done():
 | 
				
			||||||
                                self.upstream_safe = urllib.parse.quote(new_url)
 | 
					                        future.cancel()
 | 
				
			||||||
                            self.proxy = result.current_proxy
 | 
					
 | 
				
			||||||
                            proxies[self.provider] = result.current_proxies
 | 
					 | 
				
			||||||
    async def meta(self):
 | 
					    async def meta(self):
 | 
				
			||||||
        data = []
 | 
					        data = []
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user