""" Application =========== """ from celery.app.log import TaskFormatter from celery.signals import after_setup_logger from celery.signals import after_setup_task_logger from flask_celeryext import FlaskCeleryExt from owsrequest import flask_request from raven.contrib import flask from raven.contrib.celery import register_signal from masters_registry import api from masters_registry import config from masters_registry.connectors import loggly from masters_registry.connectors import sentry from masters_registry import handlers # noqa if config.SENTRY_DSN: api.app.config['SENTRY_DSN'] = config.SENTRY_DSN flask.Sentry(api.app) register_signal(sentry.sentry_client) app = api.app try: import uwsgi # noqa uwsgiRunning = True except ImportError: uwsgiRunning = False flask_request.setup(app, config.ENVIRONMENT, uwsgi_cache_enabled=uwsgiRunning, add_request_context=True) app.config['result_backend'] = config.CELERY_RESULT_BACKEND app.config['worker_prefetch_multiplier'] = config.CELERY_WORKER_PREFETCH_MULTIPLIER app.config['task_acks_late'] = config.CELERY_TASK_ACKS_LATE app.config['broker_url'] = config.BROKER_URL app.config['imports'] = config.CELERY_IMPORTS app.config['broker_transport_options'] = config.BROKER_TRANSPORT_OPTIONS app.config['task_always_eager'] = config.CELERY_ALWAYS_EAGER app.config['task_eager_propagates'] = config.CELERY_EAGER_PROPAGATES_EXCEPTIONS app.config['task_serializer'] = config.CELERY_SERIALIZER app.config['result_serializer'] = config.CELERY_SERIALIZER app.config['accept_content'] = ['application/json', 'application/x-python-serialize'] ext = FlaskCeleryExt(app) celery = ext.celery celery.conf.update(app.config) TaskBase = celery.Task class ContextTask(TaskBase): abstract = True def __call__(self, *args, **kwargs): with app.app_context(): return TaskBase.__call__(self, *args, **kwargs) celery.Task = ContextTask def initialize_logger( signal=None, sender=None, logger=None, loglevel=None, logfile=None, format=None, colorize=None, **kwargs): """Hook up additional logging handlers to celery Args: signal (Signal): celery Signal instance sender (any): sender of signal logger (Logger): Logger instance loglevel (int): log level logfile (str): log file (if exists) format (str): log format string colorize (bool): should the logs be colorized Returns: Logger """ return loggly.initialize_celery_logging(logger, format) def initialize_task_logger( signal=None, sender=None, logger=None, loglevel=None, logfile=None, format=None, colorize=None, **kwargs): """Hook up additional logging handlers to celery tasks Args: signal (Signal): celery Signal instance sender (any): sender of signal logger (Logger): Logger instance loglevel (int): log level logfile (str): log file (if exists) format (str): log format string colorize (bool): should the logs be colorized Returns: Logger """ return loggly.initialize_celery_logging(logger, format, TaskFormatter) after_setup_logger.connect(initialize_logger) after_setup_task_logger.connect(initialize_task_logger)