Reputation: 1571
I'd like to make a create a simple Rest API with DRF (https://www.django-rest-framework.org/). Another service is going to make requests in which it provides a JSON. This json is parsed and some rather simple pandas dataframe operations are going to take place. The result is sent back via JSON.
Is there a way to make this process multi-threaded? Even though the pandas operations are rather simple, they still might take ~0.5s-1s, and I'd like to avoid people waiting for a few secs if there's 3-4 of such requests made in the same moment for some reason.
Thanks!
Upvotes: 3
Views: 5940
Reputation: 1658
Did you deploy your API using YourAPIScript.py runserver
?
As far as I remember, it's single threaded, so it won't be able to start processing one request until it has finished processing another.
Solutions:
gevent
or eventlet
(http://docs.gunicorn.org/en/stable/settings.html#id75).
For worker count and threads, the defaults are 1 each, meaning that by default you get a concurrency of 1 request.Upvotes: 7
Reputation: 86
In my opinion it may be a good idea to avoid solving this problem with multi-threading. It may work better this way:
In my opinion processing JSON with Pandas is not something you would want to do during request-response process, it better fits asynchronous tasks architecture. Today it may take 0,5-1 seconds, but it's possible that tomorrow it will take 10 seconds and hang your application
Upvotes: 3