Created
January 12, 2016 09:33
-
-
Save bastianh/5ca79d76bc88b1a2af97 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from celery import Celery | |
from celery.loaders.base import BaseLoader | |
from raven import Client | |
from raven.contrib.celery import register_signal | |
from webapp import settings | |
from webapp.app import create_app | |
class CeleryLoader(BaseLoader): | |
def __init__(self, app, **kwargs): | |
super(CeleryLoader, self).__init__(app, **kwargs) | |
self.flask_app = None | |
# noinspection PyPep8Naming | |
def on_worker_init(self): | |
TaskBase = self.app.Task | |
class ContextTask(TaskBase): | |
abstract = True | |
def __call__(self, *args, **kwargs): | |
with self.flask_app.app_context(): | |
return TaskBase.__call__(self, *args, **kwargs) | |
self.app.Task = ContextTask | |
self.flask_app = create_app(db_only=True) | |
if settings.SENTRY_DSN: | |
client = Client(settings.SENTRY_DSN) | |
register_signal(client) | |
def on_task_init(self, task_id, task): | |
task.flask_app = self.flask_app | |
def celery_app(): | |
capp = Celery(loader=CeleryLoader) | |
capp.config_from_object(settings) | |
return capp | |
celery = celery_app() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment