Skip to content

Commit

Permalink
Added method sonicprobe.libs.workerpool.WorkerPool.run_args.
Browse files Browse the repository at this point in the history
  • Loading branch information
Adrien Delle Cave committed Jan 13, 2020
1 parent 113ced1 commit eb8952c
Show file tree
Hide file tree
Showing 8 changed files with 112 additions and 245 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
python-sonicprobe (0.3.24) unstable; urgency=medium

* Added method sonicprobe.libs.workerpool.WorkerPool.run_args.

-- Adrien DELLE CAVE (Decryptus) <adc@doowan.net> Mon, 13 Jan 2020 09:40:38 +0100

python-sonicprobe (0.3.23) unstable; urgency=medium

* Added function helpers.get_nb_workers
Expand Down
2 changes: 1 addition & 1 deletion RELEASE
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.3.23
0.3.24
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.3.23
0.3.24
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
httpdis>=0.6.10
httpdis>=0.6.11
pyOpenSSL
python-magic
psutil>=2.1
Expand Down
4 changes: 2 additions & 2 deletions setup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ description: sonicprobe
author: Adrien Delle Cave
author_email: pypi@doowan.net
copyright: '2020 Adrien Delle Cave'
release: '0.3.23'
version: '0.3.23'
release: '0.3.24'
version: '0.3.24'
license: License GPL-3
url: https://github.com/decryptus/sonicprobe
python_requires:
Expand Down
240 changes: 0 additions & 240 deletions sonicprobe/libs/pworkerpool.py

This file was deleted.

14 changes: 14 additions & 0 deletions sonicprobe/libs/workerpool.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,20 @@ def run(self, target, callback = None, name = None, complete = None, qpriority =
qpriority = time.time()
self.tasks.put((qpriority, (target, callback, name, complete, args, kargs)))

def run_args(self, target, *args, **kwargs):
callback = kwargs.pop('_callback_', None)
name = kwargs.pop('_name_', None)
complete = kwargs.pop('_complete_', None)
qpriority = kwargs.pop('_qpriority_', None)

self.run(target = target,
callback = callback,
name = name,
complete = complete,
qpriority = qpriority,
*args,
**kwargs)

def killall(self, wait = None):
"""
Kill all active workers.
Expand Down
87 changes: 87 additions & 0 deletions sonicprobe/sp_logging/handlers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2015-2019 Adrien Delle Cave
# SPDX-License-Identifier: GPL-3.0-or-later
"""sonicprobe.sp_logging.handlers"""

import smtplib

try:
from email.utils import formatdate
except ImportError:
from email.Utils import formatdate

from logging.handlers import SMTPHandler

import six


class QueueSMTPHandler(SMTPHandler):
def __init__(self, mailhost, fromaddr, toaddrs, subject,
credentials = None, secure = None, timeout = 5.0, logger_name = None):
self.queues = {}
self.logger_name = logger_name
self._timeout = timeout

if six.PY2:
SMTPHandler.__init__(self, mailhost, fromaddr, toaddrs, subject, credentials, secure)
else:
SMTPHandler.__init__(self, mailhost, fromaddr, toaddrs, subject, credentials, secure, timeout)

def isEmpty(self):
return len(self.queues) == 0

def getSubject(self, record):
if self.logger_name:
return "[%s] %s Event" % (self.logger_name, record.levelname)
return "%s Event" % record.levelname

def emit(self, record):
if record.levelname not in self.queues:
self.queues[record.levelname] = []

self.queues[record.levelname].append(record)

def purge(self):
if self.isEmpty():
return

queues = dict(self.queues)
self.queues = {}

for records in six.itervalues(queues):
msg = ""
record = None

for record in records:
msg += "%s\n" % self.format(record)

if not record:
continue

smtp = None

try:
port = self.mailport
if not port:
port = smtplib.SMTP_PORT
smtp = smtplib.SMTP(self.mailhost, port, timeout=self._timeout)
msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\nDate: %s\r\n\r\n%s" %
(self.fromaddr,
",".join(self.toaddrs),
self.getSubject(record),
formatdate(),
msg))
if self.username:
if self.secure is not None:
smtp.ehlo()
smtp.starttls(*self.secure)
smtp.ehlo()
smtp.login(self.username, self.password)
smtp.sendmail(self.fromaddr, self.toaddrs, msg)
except (KeyboardInterrupt, SystemExit):
raise
except Exception:
self.handleError(record)
finally:
if smtp:
smtp.quit()

0 comments on commit eb8952c

Please sign in to comment.