Столкнулся с такой ситуацией, которую к сожалению не могу победить. Написан бот, который проверяет "изменения" из выписки ЕГРН, через requests. Если запускать скрипт отдельно, то отрабатывает на 100 процентов. Но вот если данный скрипт начинает работать в боте, то возникают такие ситуации когда сообщения о статусе дублируются (не сразу, а со временем), и по одной фирме в чат приходят 3-4 сообщения одинаково содержания. async def zzz(wait_for: int, coro): while True: await asyncio.sleep(wait_for) await coro() if __name__ == '__main__': loop = asyncio.get_event_loop() Block = Blocker() Check = Checker() loop.create_task(zzz(900, coro = Block.run_all)) loop.create_task(zzz(1700 coro = Check.main)) execute.start_polling(dp,loop = loop) Код async def zzz(wait_for: int, coro): while True: await asyncio.sleep(wait_for) await coro() if __name__ == '__main__': loop = asyncio.get_event_loop() Block = Blocker() Check = Checker() loop.create_task(zzz(900, coro = Block.run_all)) loop.create_task(zzz(1700 coro = Check.main)) execute.start_polling(dp,loop = loop) Блоки ```Block``` и ```Checker``` это как раз сами проверки один проверяет на наличие блокировки фирмы, второй проверяет на наличие изменении в выписки ЕГРН. Ниже представлен метод получения ТОКЕНОВ async def get_token(self, proxy, inn): if len(str(inn)) == 10: params = {"page": "1", "pageSize": "10", "pbCaptchaToken": "", "token": "", "mode": "search-all", "queryAll": str(inn), "queryUl": "", "okvedUl": "", "statusUl": "", "regionUl": "", "isMspUl": "", "mspUl1": "1", "mspUl2": "2", "mspUl3": "3", "queryIp": "", "okvedIp": "", "statusIp": "", "regionIp": "", "isMspIp": "", "mspIp1": "1", "mspIp2": "2", "mspIp3": "3", "queryUpr": "","uprType1": "1","uprType0": "1", "queryRdl": "", "dateRdl": "", "queryAddr": "", "regionAddr": "", "queryOgr": "", "ogrFl": "1", "ogrUl": "1", "npTypeDoc": "1", "ogrnUlDoc": "", "ogrnIpDoc": "","nameUlDoc": "","nameIpDoc": "","formUlDoc": "","formIpDoc": "","ifnsDoc": "","dateFromDoc": "","dateToDoc": ""} try: async with httpx.AsyncClient(headers=self.__headers, proxies=f'http://{proxy}') as client: response = await client.post(self.__url_token, params=params) if response.status_code == 200: r = response.json() await self.fetch_token(r) else: await self.__rotate_proxy() await self.get_token(proxy=self._proxy, inn=inn) except Exception as e: logger.error(f'ОШИБКА|{proxy}|{inn}|{e}') try: await self.__rotate_proxy() async with httpx.AsyncClient(headers=self.__headers, proxies=f'http://{self._proxy}') as client: response = await client.get(self.__url_token, params=self.__params) r = response.json() await self.fetch_token(r) except: pass Код async def get_token(self, proxy, inn): if len(str(inn)) == 10: params = {"page": "1", "pageSize": "10", "pbCaptchaToken": "", "token": "", "mode": "search-all", "queryAll": str(inn), "queryUl": "", "okvedUl": "", "statusUl": "", "regionUl": "", "isMspUl": "", "mspUl1": "1", "mspUl2": "2", "mspUl3": "3", "queryIp": "", "okvedIp": "", "statusIp": "", "regionIp": "", "isMspIp": "", "mspIp1": "1", "mspIp2": "2", "mspIp3": "3", "queryUpr": "","uprType1": "1","uprType0": "1", "queryRdl": "", "dateRdl": "", "queryAddr": "", "regionAddr": "", "queryOgr": "", "ogrFl": "1", "ogrUl": "1", "npTypeDoc": "1", "ogrnUlDoc": "", "ogrnIpDoc": "","nameUlDoc": "","nameIpDoc": "","formUlDoc": "","formIpDoc": "","ifnsDoc": "","dateFromDoc": "","dateToDoc": ""} try: async with httpx.AsyncClient(headers=self.__headers, proxies=f'http://{proxy}') as client: response = await client.post(self.__url_token, params=params) if response.status_code == 200: r = response.json() await self.fetch_token(r) else: await self.__rotate_proxy() await self.get_token(proxy=self._proxy, inn=inn) except Exception as e: logger.error(f'ОШИБКА|{proxy}|{inn}|{e}') try: await self.__rotate_proxy() async with httpx.AsyncClient(headers=self.__headers, proxies=f'http://{self._proxy}') as client: response = await client.get(self.__url_token, params=self.__params) r = response.json() await self.fetch_token(r) except: pass Это метод получения уже самой информации, которая мне необходима async def data_for_token(self, proxy, token): params2 = {'token': str(token)} try: async with httpx.AsyncClient(proxies=f'http://{proxy}') as client: response2 = await client.post(self.__url_check, params=params2) if response2.status_code == 200: e = response2.json() await self.check_changes(e) else: await self.__rotate_proxy() logger.warning(f'Повторное отправление {token}') await self.data_for_token(proxy=self._proxy, token=token) except Exception as e: print(e) Код async def data_for_token(self, proxy, token): params2 = {'token': str(token)} try: async with httpx.AsyncClient(proxies=f'http://{proxy}') as client: response2 = await client.post(self.__url_check, params=params2) if response2.status_code == 200: e = response2.json() await self.check_changes(e) else: await self.__rotate_proxy() logger.warning(f'Повторное отправление {token}') await self.data_for_token(proxy=self._proxy, token=token) except Exception as e: print(e) Ну и собственно сам вывод информации в телеграмм бот @staticmethod async def check_changes(res: dict): data = res.get('vyp') name_firm = data.get('НаимЮЛПолн') inn = data.get('ИНН') mes = None try: if 'СвНедАдресЮЛ' in data: info = data.get('СвНедАдресЮЛ')[0] mes = f'Название:{name_firm}\nИНН:{inn}\n\tТекст:<b>СВЕДЕНИЯ О НЕДОСТОВЕРНОСТИ ДАННЫХ ОБ АДРЕСЕ ' \ if 'СведДолжнФЛ' in data: info = data.get('СведДолжнФЛ')[0] sugn = info.get('СвНедДанДолжнФЛ')[0] mes = f'Название:{name_firm}\nИНН:{inn}\n\tТекст:<b>СВЕДЕНИЯ О НЕДОСТОВЕРНОСТИ ДАННЫХ О РУКОВОДИТЕЛЕ ' \ f'КОМПАНИИ</b>\n\t{sugn.get("ТекстНедДанДолжнФЛ")}\n\tДата записи:{sugn.get("ДатаЗаписи")}' await bot.send_message(chat_id=xxx, text=mes) except Exception as e: pass Код @staticmethod async def check_changes(res: dict): data = res.get('vyp') name_firm = data.get('НаимЮЛПолн') inn = data.get('ИНН') mes = None try: if 'СвНедАдресЮЛ' in data: info = data.get('СвНедАдресЮЛ')[0] mes = f'Название:{name_firm}\nИНН:{inn}\n\tТекст:<b>СВЕДЕНИЯ О НЕДОСТОВЕРНОСТИ ДАННЫХ ОБ АДРЕСЕ ' \ if 'СведДолжнФЛ' in data: info = data.get('СведДолжнФЛ')[0] sugn = info.get('СвНедДанДолжнФЛ')[0] mes = f'Название:{name_firm}\nИНН:{inn}\n\tТекст:<b>СВЕДЕНИЯ О НЕДОСТОВЕРНОСТИ ДАННЫХ О РУКОВОДИТЕЛЕ ' \ f'КОМПАНИИ</b>\n\t{sugn.get("ТекстНедДанДолжнФЛ")}\n\tДата записи:{sugn.get("ДатаЗаписи")}' await bot.send_message(chat_id=xxx, text=mes) except Exception as e: pass Прошу прощения, если написан много не нужной информации, постарался максимально изложить всю суть проблемы. Подскажите куда надо копать, и как это можно исправить.
Оберни это всё пожалуйста в тут твой код[CODE], пока что не читабельно Python тут твой код[CODE], пока что не читабельно