Skip to content

Instantly share code, notes, and snippets.

@HeyHugo
Created November 16, 2016 20:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HeyHugo/a9fb6912960e9dfec34805f6f9fd8ae5 to your computer and use it in GitHub Desktop.
Save HeyHugo/a9fb6912960e9dfec34805f6f9fd8ae5 to your computer and use it in GitHub Desktop.
Celery extension for flask
import flask
from celery import Celery
class FlaskCelery(Celery):
def __init__(self, *args, **kwargs):
self.app = None
super(FlaskCelery, self).__init__(*args, **kwargs)
self.patch_task()
if 'app' in kwargs:
self.init_app(kwargs['app'])
def patch_task(self):
TaskBase = self.Task
_celery = self
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
if flask.has_app_context():
return TaskBase.__call__(self, *args, **kwargs)
else:
with _celery.app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
self.Task = ContextTask
def init_app(self, app):
self.app = app
self.config_from_object(app.config)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment