def test_modify_payload(self): def _add_test_key(payload, **kw): payload['test'] = 333 return payload events.add_payload_handler(_add_test_key) self.assertEqual(events.on_payload({'hello': 'world'}), {'hello': 'world', 'test': 333})
def test_filter_by_level(self): self.assertFalse(events.on_exception_info((None, 123, None), level='ignored')) self.assertIsNot(events.on_exception_info((None, 123, None), level='error'), False) self.assertFalse(events.on_message('hello world', level='ignored')) self.assertIsNot(events.on_message('hello world', level='error'), False) self.assertFalse(events.on_payload({}, level='ignored')) self.assertIsNot(events.on_message({}, level='error'), False)
def send_payload(payload, access_token): """ Sends a payload object, (the result of calling _build_payload() + _serialize_payload()). Uses the configured handler from SETTINGS['handler'] Available handlers: - 'blocking': calls _send_payload() (which makes an HTTP request) immediately, blocks on it - 'thread': starts a single-use thread that will call _send_payload(). returns immediately. - 'agent': writes to a log file to be processed by rollbar-agent - 'tornado': calls _send_payload_tornado() (which makes an async HTTP request using tornado's AsyncHTTPClient) - 'gae': calls _send_payload_appengine() (which makes a blocking call to Google App Engine) - 'twisted': calls _send_payload_twisted() (which makes an async HTTP request using Twisted and Treq) """ payload = events.on_payload(payload) if payload is False: return handler = SETTINGS.get('handler') if handler == 'twisted': payload['data']['framework'] = 'twisted' payload_str = _serialize_payload(payload) if handler == 'blocking': _send_payload(payload_str, access_token) elif handler == 'agent': agent_log.error(payload_str) elif handler == 'tornado': if TornadoAsyncHTTPClient is None: log.error('Unable to find tornado') return _send_payload_tornado(payload_str, access_token) elif handler == 'gae': if AppEngineFetch is None: log.error('Unable to find AppEngine URLFetch module') return _send_payload_appengine(payload_str, access_token) elif handler == 'twisted': if treq is None: log.error('Unable to find Treq') return _send_payload_twisted(payload_str, access_token) else: # default to 'thread' thread = threading.Thread(target=_send_payload, args=(payload_str, access_token)) _threads.put(thread) thread.start()
def send_payload(payload, access_token): """ Sends a payload object, (the result of calling _build_payload() + _serialize_payload()). Uses the configured handler from SETTINGS['handler'] Available handlers: - 'blocking': calls _send_payload() (which makes an HTTP request) immediately, blocks on it - 'thread': starts a single-use thread that will call _send_payload(). returns immediately. - 'agent': writes to a log file to be processed by rollbar-agent - 'tornado': calls _send_payload_tornado() (which makes an async HTTP request using tornado's AsyncHTTPClient) - 'gae': calls _send_payload_appengine() (which makes a blocking call to Google App Engine) - 'twisted': calls _send_payload_twisted() (which makes an async HTTP reqeust using Twisted and Treq) """ payload = events.on_payload(payload) if payload is False: return payload_str = _serialize_payload(payload) handler = SETTINGS.get('handler') if handler == 'blocking': _send_payload(payload_str, access_token) elif handler == 'agent': agent_log.error(payload_str) elif handler == 'tornado': if TornadoAsyncHTTPClient is None: log.error('Unable to find tornado') return _send_payload_tornado(payload_str, access_token) elif handler == 'gae': if AppEngineFetch is None: log.error('Unable to find AppEngine URLFetch module') return _send_payload_appengine(payload_str, access_token) elif handler == 'twisted': if treq is None: log.error('Unable to find Treq') return _send_payload_twisted(payload_str, access_token) else: # default to 'thread' thread = threading.Thread(target=_send_payload, args=(payload_str, access_token)) _threads.put(thread) thread.start()