summaryrefslogtreecommitdiffstats
path: root/wallace/module_resources.py
diff options
context:
space:
mode:
authorJeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com>2018-07-27 10:22:18 +0200
committerJeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com>2018-07-27 10:22:18 +0200
commit3c5ce19ae3e2b5ed90d0924c89d15f0c7609f53b (patch)
treed3e08b8874fdabfc858633a1ceb9e906ea743a51 /wallace/module_resources.py
parenta1c700d53d8a9b0405f7bc28f835ab5142d0f72d (diff)
downloadpykolab-3c5ce19ae3e2b5ed90d0924c89d15f0c7609f53b.tar.gz
Manage the pool processes such that they die after a limited quantity of time, and pick up messages from the spool asynchronously.
Summary: Reference T75735 Let a single worker process timeout itself Set the signal as late as possible Abstract the method to pickup messages from the spool, so that a new recurring Timer may pick up messages out of the spool Test Plan: * Run messages through it Reviewers: #pykolab_developers Subscribers: #pykolab_developers Differential Revision: https://git.kolab.org/D617
Diffstat (limited to 'wallace/module_resources.py')
-rw-r--r--wallace/module_resources.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/wallace/module_resources.py b/wallace/module_resources.py
index 962e11a..80c85f1 100644
--- a/wallace/module_resources.py
+++ b/wallace/module_resources.py
@@ -22,6 +22,7 @@ import icalendar
import os
import pytz
import random
+import signal
import tempfile
import time
from urlparse import urlparse
@@ -1355,8 +1356,14 @@ def send_owner_notification(resource, owner, itip_event, success=True):
resource['cn'], participant_status_label(status) if success else _('failed')
))
+ seed = random.randint(0, 6)
+ alarm_after = (seed * 10) + 60
+ log.debug(_("Set alarm to %s seconds") % (alarm_after), level=8)
+ signal.alarm(alarm_after)
+
result = modules._sendmail(resource['mail'], owner['mail'], msg.as_string())
log.debug(_("Owner notification was sent successfully: %r") % result, level=8)
+ signal.alarm(0)
def owner_notification_text(resource, owner, event, success):
organizer = event.get_organizer()