소스 검색

[minor] use mixin class for Timed_POP3 and Timed_POP3_SSL

version-14
Anand Doshi 11 년 전
부모
커밋
df95128fed
1개의 변경된 파일12개의 추가작업 그리고 22개의 파일을 삭제
  1. +12
    -22
      webnotes/utils/email_lib/receive.py

+ 12
- 22
webnotes/utils/email_lib/receive.py 파일 보기

@@ -238,38 +238,28 @@ class POP3Mailbox:
return error_msg return error_msg
class Timed_POP3(poplib.POP3):
class TimerMixin(object):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.timeout = kwargs.pop('timeout', 0.0) self.timeout = kwargs.pop('timeout', 0.0)
self.elapsed_time = 0.0 self.elapsed_time = 0.0
poplib.POP3.__init__(self, *args, **kwargs)
self._super.__init__(self, *args, **kwargs)
def _getline(self, *args, **kwargs): def _getline(self, *args, **kwargs):
start_time = time.time() start_time = time.time()
ret = poplib.POP3._getline(self, *args, **kwargs)
ret = self._super._getline(self, *args, **kwargs)

self.elapsed_time += time.time() - start_time self.elapsed_time += time.time() - start_time
if self.timeout and self.elapsed_time > self.timeout: if self.timeout and self.elapsed_time > self.timeout:
raise EmailTimeoutError raise EmailTimeoutError
return ret return ret
def quit(self, *args, **kwargs): def quit(self, *args, **kwargs):
self.elapsed_time = 0.0 self.elapsed_time = 0.0
return poplib.POP3.quit(self, *args, **kwargs)
return self._super.quit(self, *args, **kwargs)
class Timed_POP3_SSL(poplib.POP3_SSL):
def __init__(self, *args, **kwargs):
self.timeout = kwargs.pop('timeout', 0.0)
self.elapsed_time = 0
poplib.POP3_SSL.__init__(self, *args, **kwargs)
def _getline(self, *args, **kwargs):
start_time = time.time()
ret = poplib.POP3_SSL._getline(self, *args, **kwargs)
self.elapsed_time += time.time() - start_time
if self.timeout and self.elapsed_time > self.timeout:
raise EmailTimeoutError
return ret
def quit(self, *args, **kwargs):
self.elapsed_time = 0.0
return poplib.POP3_SSL.quit(self, *args, **kwargs)
class Timed_POP3(TimerMixin, poplib.POP3):
_super = poplib.POP3
class Timed_POP3_SSL(TimerMixin, poplib.POP3_SSL):
_super = poplib.POP3_SSL

불러오는 중...
취소
저장