Как не отображать сообщения для повторяющихся исключений?
Для часто повторяющихся исключений необходимо реализовать функционал, которые позволит отобразить текст только для первого раза (исключения) или после сброса "счетчика" исключения по определенному событию. В ниже приведенном коде таким событием является функция - reset_exception() в случае если оно возвращает значение True. При этом само исключение должно срабатывать как обычно, чтобы не нарушать работу бизнес логики. Как правильно реализовать такой функционал на приведенном примере на случай для одного/нескольких типов различных исключений?
import asyncio
import logging
from random import randint
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger()
class CustomError(Exception):
def __init__(self, val1):
self.message = f"Error val1:{val1}"
super().__init__(val1)
def __str__(self):
return self.message
class Test:
async def func1(self, var1):
var1 = var1 + 100
raise CustomError(var1)
def reset_exception():
return randint(1, 100) < 5
async def main():
# await custom_function()
test = Test()
for i in range(10):
try:
print(i)
reset_exception()
await test.func1(10)
except CustomError as err:
print(err)
logger.error(err)
if __name__ == "__main__":
lock = asyncio.Lock()
loop = asyncio.new_event_loop()
task = loop.create_task(main())
loop.run_forever()