diff --git a/.gitignore b/.gitignore index da69b8a..4b46767 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ erl_crash.dump *.db Documentation/ .tox/ +.idea/ diff --git a/flask_celery.py b/flask_celery.py index 2f9a85d..1fd7887 100644 --- a/flask_celery.py +++ b/flask_celery.py @@ -17,7 +17,7 @@ from celery.loaders import default as _default from celery.utils import get_full_cls_name -from werkzeug import cached_property +from werkzeug.utils import cached_property from flask.ext import script @@ -25,9 +25,13 @@ class FlaskLoader(_default.Loader): def read_configuration(self): - config = self.app.flask_app.config - settings = self.setup_settings(config) - self.configured = True + try: + config = self.app.flask_app.config + settings = self.setup_settings(config) + self.configured = True + except AttributeError: + settings = dict() + self.configured = False return settings @@ -51,6 +55,15 @@ def __init__(self, flask_app=None, *args, **kwargs): def __reduce_args__(self): return (self.flask_app, ) + super(Celery, self).__reduce_args__() + def init_app(self, app, config=None): + self.flask_app = app + if config is not None: + self.conf.update(config) + else: + self.conf.update(app.config) + print self.conf + self.configured = True + def to_Option(option, typemap={"int": int, "float": float, "string": str}): @@ -111,6 +124,7 @@ def run(self, **kwargs): @cached_property def worker(self): from celery.bin.celeryd import WorkerCommand + app = current_celery() return WorkerCommand(app=current_celery())