From 3a989534cfb54df720f34675a61c79dda00b2ab3 Mon Sep 17 00:00:00 2001 From: Patrick Jentsch <pjentsch@sfb1288inf-Laptop.fritz.box> Date: Thu, 23 Apr 2020 08:35:18 +0200 Subject: [PATCH] Make the app arg in @background functions a bit less magical --- app/corpora/tasks.py | 9 ++++++--- app/decorators.py | 4 ++-- app/jobs/tasks.py | 3 ++- app/profile/tasks.py | 6 ++---- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/app/corpora/tasks.py b/app/corpora/tasks.py index 480cb7aa..c1ad6d83 100644 --- a/app/corpora/tasks.py +++ b/app/corpora/tasks.py @@ -7,7 +7,8 @@ import shutil @background -def build_corpus(app, corpus_id): +def build_corpus(corpus_id, *args, **kwargs): + app = kwargs['app'] with app.app_context(): corpus = Corpus.query.get(corpus_id) if corpus is None: @@ -48,7 +49,8 @@ def build_corpus(app, corpus_id): @background -def delete_corpus(app, corpus_id): +def delete_corpus(corpus_id, *args, **kwargs): + app = kwargs['app'] with app.app_context(): corpus = Corpus.query.get(corpus_id) if corpus is None: @@ -60,7 +62,8 @@ def delete_corpus(app, corpus_id): @background -def delete_corpus_file(app, corpus_file_id): +def delete_corpus_file(corpus_file_id, *args, **kwargs): + app = kwargs['app'] with app.app_context(): corpus_file = CorpusFile.query.get(corpus_file_id) if corpus_file is None: diff --git a/app/decorators.py b/app/decorators.py index fe740fef..a6a25fa1 100644 --- a/app/decorators.py +++ b/app/decorators.py @@ -19,8 +19,8 @@ def background(f): ''' This decorator executes a function in a Thread ''' @wraps(f) def wrapped(*args, **kwargs): - app = current_app._get_current_object() - thread = Thread(target=f, args=(app, *args), kwargs=kwargs) + kwargs['app'] = current_app._get_current_object() + thread = Thread(target=f, args=args, kwargs=kwargs) thread.start() return thread return wrapped diff --git a/app/jobs/tasks.py b/app/jobs/tasks.py index 56b4462c..58e66d83 100644 --- a/app/jobs/tasks.py +++ b/app/jobs/tasks.py @@ -7,7 +7,8 @@ import shutil @background -def delete_job(app, job_id): +def delete_job(job_id, *args, **kwargs): + app = kwargs['app'] with app.app_context(): job = Job.query.get(job_id) if job is None: diff --git a/app/profile/tasks.py b/app/profile/tasks.py index c27d6b3b..a4f61dac 100644 --- a/app/profile/tasks.py +++ b/app/profile/tasks.py @@ -1,4 +1,3 @@ -from .. import logger from ..decorators import background from ..models import User import os @@ -6,13 +5,12 @@ import shutil @background -def delete_user(app, user_id): - logger.warning('aufgerufen') +def delete_user(user_id, *args, **kwargs): + app = kwargs['app'] with app.app_context(): user = User.query.get(user_id) if user is None: raise Exception('User {} not found!'.format(user_id)) - logger.warning('deleting user') path = os.path.join(app.config['NOPAQUE_STORAGE'], str(user.id)) shutil.rmtree(path, ignore_errors=True) user.delete() -- GitLab