def prevent_spam(func):
"""Prevent spamming in the logger
"""
_last_messages = {}
def _remove_from_cache(args):
m = _last_messages.pop(args)
if m == 1:
return
method = getattr(Log._logger, args[0])
method(
'{}\n ...last message repeated {} in the last 10s'.format(
args[1], 'one more time' if m == 2 else '{} times'.format(m)
)
)
@functools.wraps(func)
def wrapper(cls, *args, **kwargs):
if args in _last_messages:
_last_messages[args] += 1
return
_last_messages[args] = 1
sublime.set_timeout_async(lambda: _remove_from_cache(args), 10000)
func(cls, args[0], *args[1:], **kwargs)
return wrapper
评论列表
文章目录