"""Daemon for daemon_asset_copy jobs.""" import sentry_sdk from botocore.errorfactory import ClientError from daemon_asset_copy import config from daemon_asset_copy.logic import task_worker def before_send_exception_to_sentry(event, hint): """Filter exceptions sent to sentry. :param event: Sentry event containing exception context. :param hint: Sentry hint containing raised exception. :return: event or None """ if 'exc_info' not in hint: return event _ignore_0, exc_value, _ignore_1 = hint['exc_info'] if not isinstance(exc_value, ClientError): return event if (exc_value.response.get('Error') or {}).get('Code') != 'TaskTimedOut': return event return None def main(): """Run application.""" sentry_sdk.init(config.SENTRY_DSN, before_send=before_send_exception_to_sentry) task_worker.wait_ready_datadog() task_worker.entrypoint() if __name__ == '__main__': main()