From d2217f3125be6417fdd0562d94c67022517e0404 Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Tue, 29 Nov 2016 07:46:32 -0500 Subject: [PATCH] Always use request context --- CHANGELOG | 9 +++++++++ flask_defer.py | 19 ++++++------------- setup.py | 2 +- test_flask_defer.py | 4 ++-- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3c7423a..c61da10 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,15 @@ Flask-Defer Changelog ===================== +Version 1.1.0 +------------- + +:Released: 11-29-2016 + +:Changes: + Public API is the same, except now we only attach functions to the request context + + Version 1.0.1 ------------- diff --git a/flask_defer.py b/flask_defer.py index e0dcf01..1137368 100644 --- a/flask_defer.py +++ b/flask_defer.py @@ -1,18 +1,15 @@ -try: - from flask import _app_ctx_stack as stack -except ImportError: - from flask import _request_ctx_stack as stack +from flask import has_request_context, _request_ctx_stack __all__ = ['after_request', 'defer', 'FlaskDefer'] def defer(func, *args, **kwargs): - ctx = stack.top - # If we are not in a request/app context, then just execute - if not ctx: + if not has_request_context(): return func(*args, **kwargs) + ctx = _request_ctx_stack.top + # We are in a request/app context, defer until request/app teardown params = dict(func=func, args=args, kwargs=kwargs) if not hasattr(ctx, 'deferred_tasks'): @@ -30,14 +27,10 @@ class FlaskDefer(object): self.init_app(app) def init_app(self, app): - if hasattr(app, 'teardown_appcontext'): - app.teardown_appcontext(self._execute_deferred) - else: - app.teardown_request(self._execute_deferred) + app.teardown_request(self._execute_deferred) def _execute_deferred(self, exception): - ctx = stack.top + ctx = _request_ctx_stack.top if hasattr(ctx, 'deferred_tasks'): for params in ctx.deferred_tasks: - # DEV: Do not try/except, let these function calls fail params['func'](*params['args'], **params['kwargs']) diff --git a/setup.py b/setup.py index 7b2308c..43ce176 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ def get_long_description(): setup( name='Flask-Defer', - version='1.0.1', + version='1.1.0', url='https://github.com/brettlangdon/flask-defer.git', license='MIT', author='Brett Langdon', diff --git a/test_flask_defer.py b/test_flask_defer.py index 71c9109..699742b 100644 --- a/test_flask_defer.py +++ b/test_flask_defer.py @@ -1,7 +1,7 @@ import unittest -from flask import Flask -from flask_defer import FlaskDefer, defer, stack +from flask import Flask, _request_ctx_stack as stack +from flask_defer import FlaskDefer, defer def deferred_task(name, with_keyword=False):