python flask threaded true not working
From the flask documentation about Deployment Options
While lightweight and easy to use, Flask’s built-in server is not suitable for production as it doesn’t scale well and by default serves only one request at a time. Some of the options available for properly running Flask in production are documented here.
That's why your second request isn't happening until the first is complete, because the flask server on it's own can only handle one request at a time. To solve this you will need to run Flask on some kind of deployment server for example gunicorn or uWSGI which seem to be the most popular.
You also might find the answer to this or this question helpful.
Deployment Options also has a lot of links to guides and information about different ways of solving your issue.
Threaded Flask application not working as expected
@Lukas was right.
I was debugging in Google Chrome with two tabs. Apparently Chrome is trying to be smart by using the socket same for both tabs. How Chrome handles that can be changed with the -socket-reuse-policy
flag when starting Chrome.
An easier way to test is by using different hostname in each tab or by using curl -N
(-N
flag for no buffer to see the streaming). Doing that it did indeed work as expected.
Handle Flask requests concurrently with threaded=True
As of Flask 1.0, the WSGI server included with Flask is run in threaded mode by default.
Prior to 1.0, or if you disable threading, the server is run in single-threaded mode, and can only handle one request at a time. Any parallel requests will have to wait until they can be handled, which can lead to issues if you tried to contact your own server from a request.
With threaded=True
requests are each handled in a new thread. How many threads your server can handle concurrently depends entirely on your OS and what limits it sets on the number of threads per process. The implementation uses the SocketServer.ThreadingMixIn
class, which sets no limits to the number of threads it can spin up.
Note that the Flask server is designed for development only. It is not a production-ready server. Don't rely on it to run your site on the wider web. Use a proper WSGI server (like gunicorn or uWSGI) instead.
Threading not working in flask
t = threading.Thread(do_sth_else())
calls do_sth_else()
and pass it's result to Thread
.
You should use it like t = threading.Thread(do_sth_else)
.
Python Flask Application with Threads not running parallel
I found the problem, the loop in the imports began while importing.
So the program did not continue.
Now I run the imports in a main function.
For more information I can recommend this:
https://www.guru99.com/learn-python-main-function-with-examples-understand-main.html
Threading in Flask not working with UWSGI but working on commandline
For me using the uwsgi flag --lazy
worked.
uwsgi foo.ini --socket=0.0.0.0:5000 --protocol=http --lazy -w wsgi
Explanation:
Quote from http://lists.unbit.it/pipermail/uwsgi/2011-June/002307.html:
single process (no master):
the process creates the thread in which the WSGI callable put data.
This is ok
with master process:
the master load the app and generate the thread. Then it forks one or
more workers. This workers are new processes with no relation with the
thread spawned in the master. So your data will go nowhere (only the
master can access the initial thread).You have two way to follow:
1) add --lazy to the command line, in this way your app will be loaded
after master's fork, so each worker will get its thread.2) rewrite your app to use the uwsgi.post_fork_hook feature.
Threaded=true Flask larger application file structure
Just tell the flask run
command to use threads:
$ export FLASK_APP=yourapplication
$ flask run --with-threads
Don't put this decision in your code; it is up to your WSGI server to run with threads or not.
You can see what options flask run
accepts with flask run --help
.
Related Topics
How to Read from S3 in Pyspark Running in Local Mode
Get Rid of Columns With Null Value in Json Output
Numpy Distance Calculations of Different Shaped Arrays
Python Data Frame How to Find the Local Maximum in a 2D Array
Calculate Rgb Value for a Range of Values to Create Heat Map
Parsing a Pipe-Delimited File in Python
How to Display a Float With Two Decimal Places
How to Remove Carriage Return in a Dataframe
Pandas Join Dataframes Based on Conditions
How to Find Duplicate Values in a List and Merge Them
Pandas Extract Numbers from Column into New Columns
Convert Np.Array of Type Float64 to Type Uint8 Scaling Values
Output the Same Amount of Rows as Asterisks Using For-Loop
How Does the Code Prints 1 2 6 24 as Output and Not 24 6 2 1
Django Viewset Has Not Attribute 'Get_Extra_Actions'
Compare Two Lists and Find the Unique Values