mirror of
https://github.com/django-q2/django-q2.git
synced 2026-09-19 02:48:16 +08:00
Merge pull request #131 from Koed00/development
Adds Rollbar support for exceptions
This commit is contained in:
@@ -29,7 +29,7 @@ from django import db
|
||||
import signing
|
||||
import tasks
|
||||
|
||||
from django_q.conf import Conf, logger, psutil, get_ppid
|
||||
from django_q.conf import Conf, logger, psutil, get_ppid, rollbar
|
||||
from django_q.models import Task, Success, Schedule
|
||||
from django_q.status import Stat, Status
|
||||
from django_q.brokers import get_broker
|
||||
@@ -363,6 +363,8 @@ def worker(task_queue, result_queue, timer, timeout=Conf.TIMEOUT):
|
||||
f = getattr(m, func)
|
||||
except (ValueError, ImportError, AttributeError) as e:
|
||||
result = (e, False)
|
||||
if rollbar:
|
||||
rollbar.report_exc_info()
|
||||
# We're still going
|
||||
if not result:
|
||||
db.close_old_connections()
|
||||
@@ -372,7 +374,9 @@ def worker(task_queue, result_queue, timer, timeout=Conf.TIMEOUT):
|
||||
res = f(*task['args'], **task['kwargs'])
|
||||
result = (res, True)
|
||||
except Exception as e:
|
||||
result = (e, False)
|
||||
result = ('{}'.format(e), False)
|
||||
if rollbar:
|
||||
rollbar.report_exc_info()
|
||||
# Process result
|
||||
task['result'] = result[0]
|
||||
task['success'] = result[1]
|
||||
|
||||
@@ -128,6 +128,9 @@ class Conf(object):
|
||||
# The redis stats key
|
||||
Q_STAT = 'django_q:{}:cluster'.format(PREFIX)
|
||||
|
||||
# Optional Rollbar key
|
||||
ROLLBAR = conf.get('rollbar', {})
|
||||
|
||||
# OSX doesn't implement qsize because of missing sem_getvalue()
|
||||
try:
|
||||
QSIZE = Queue().qsize() == 0
|
||||
@@ -160,6 +163,21 @@ if not logger.handlers:
|
||||
handler.setFormatter(formatter)
|
||||
logger.addHandler(handler)
|
||||
|
||||
# rollbar
|
||||
if Conf.ROLLBAR:
|
||||
rollbar_conf = Conf.ROLLBAR
|
||||
try:
|
||||
import rollbar
|
||||
rollbar.init(rollbar_conf.pop('access_token'), environment=rollbar_conf.pop('environment'), **rollbar_conf)
|
||||
except ImportError:
|
||||
rollbar = None
|
||||
|
||||
else:
|
||||
rollbar = None
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# get parent pid compatibility
|
||||
def get_ppid():
|
||||
|
||||
@@ -9,3 +9,4 @@ django-redis
|
||||
iron-mq
|
||||
boto3
|
||||
pymongo
|
||||
rollbar
|
||||
|
||||
@@ -20,6 +20,7 @@ psutil==3.3.0
|
||||
pymongo==3.2
|
||||
python-dateutil==2.4.2 # via arrow, botocore, iron-core
|
||||
redis==2.10.5
|
||||
requests==2.9.1 # via iron-core
|
||||
six==1.10.0 # via blessed, python-dateutil
|
||||
requests==2.9.1 # via iron-core, rollbar
|
||||
rollbar==0.11.1
|
||||
six==1.10.0 # via blessed, python-dateutil, rollbar
|
||||
wcwidth==0.1.5 # via blessed
|
||||
|
||||
Reference in New Issue
Block a user