diff --git a/.travis.yml b/.travis.yml index 4a43456..00f7484 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,6 +15,10 @@ matrix: env: TOXENV=py35 - python: 3.6 env: TOXENV=py36 + - python: pypy + env: TOXENV=pypy + - python: pypy3.5 + env: TOXENV=pypy3 install: - pip install tox diff --git a/logzio/handler.py b/logzio/handler.py index 0b319f3..a4c741f 100644 --- a/logzio/handler.py +++ b/logzio/handler.py @@ -32,6 +32,9 @@ class LogzioHandler(logging.Handler): backup_logs=backup_logs) logging.Handler.__init__(self) + def __del__(self): + del self.logzio_sender + def extra_fields(self, message): not_allowed_keys = ( diff --git a/logzio/sender.py b/logzio/sender.py index 6e81b26..922d266 100644 --- a/logzio/sender.py +++ b/logzio/sender.py @@ -48,6 +48,11 @@ class LogzioSender: self.queue = queue.Queue() self._initialize_sending_thread() + def __del__(self): + del self.logger + del self.backup_logs + del self.queue + def _initialize_sending_thread(self): self.sending_thread = Thread(target=self._drain_queue) self.sending_thread.daemon = False @@ -153,12 +158,19 @@ class LogzioSender: 'backing up to local file system', number_of_retries) backup_logs(logs_list, self.logger) + del logs_list + def _get_messages_up_to_max_allowed_size(self): logs_list = [] current_size = 0 while not self.queue.empty(): current_log = self.queue.get() - current_size += sys.getsizeof(current_log) + try: + current_size += sys.getsizeof(current_log) + except TypeError: + # pypy do not support sys.getsizeof + current_size += len(current_log) * 4 + logs_list.append(current_log) if current_size >= MAX_BULK_SIZE_IN_BYTES: break diff --git a/tox.ini b/tox.ini index 57794c0..7604e50 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] minversion = 1.7.2 -envlist = flake8, py3flake8, py27, py34, py35, py36 +envlist = flake8, py3flake8, py27, py34, py35, py36, pypy, pypy3 skip_missing_interpreters = true [testenv]