Categories
Python Answers

How to fix Python Flask throwing ‘working outside of request context’ when starting sub thread?

Spread the love

Sometimes, we want to fix Python Flask throwing ‘working outside of request context’ when starting sub thread.

In this article, we’ll look at how to fix Python Flask throwing ‘working outside of request context’ when starting sub thread.

How to fix Python Flask throwing ‘working outside of request context’ when starting sub thread?

To fix Python Flask throwing ‘working outside of request context’ when starting sub thread, we can wrap our request code in with app.test_request_context().

For instance, we write

@app.route('/my_endpoint', methods=['POST'])
def my_endpoint_handler():
    def handle_sub_view(req):
        with app.test_request_context():
            from flask import request
            request = req
            # ...
    thread.start_new_thread(handle_sub_view, (request))
    return "hello"

to call app.test_request_context() to get the request context in the handle_sub_view function.

Then we import request inside the block with

from flask import request

And then we do what we want with it.

Then we use

thread.start_new_thread(handle_sub_view, (request))

to start a new thread.

Conclusion

To fix Python Flask throwing ‘working outside of request context’ when starting sub thread, we can wrap our request code in with app.test_request_context().

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *