Ask HN: What Python framework would you use to serve up a REST API?
flask+uwsgi+nginx, tornado, or something else?
12 comments
I use Tornado. It's simple, lightweight and very well documentated. It wouldn't take much time to get it up and running. And it also supports asynchronous operations out of box unlike Flask.
However community isn't big as that of Flask and has low bus factor.
Other alternative is Django REST Framework[0]. It's also well documented and get the work done. However code base is large compared to Tornado. Advantage is, it has a bigger community support and it's easy to find a developer.
[0] - http://www.django-rest-framework.org/
However community isn't big as that of Flask and has low bus factor.
Other alternative is Django REST Framework[0]. It's also well documented and get the work done. However code base is large compared to Tornado. Advantage is, it has a bigger community support and it's easy to find a developer.
[0] - http://www.django-rest-framework.org/
We use pyramid+gunicorn+nginx without any issue. Behind that is SQLAlchemy & Postgres (with memcached for caching layer)
I know that SurveyMonkey also uses the pyramid+nginx setup.
Edit: Pyramid Documentation: http://docs.pylonsproject.org/en/latest/docs/pyramid.html#py...
I know that SurveyMonkey also uses the pyramid+nginx setup.
Edit: Pyramid Documentation: http://docs.pylonsproject.org/en/latest/docs/pyramid.html#py...
I use flask-restful at work, as a non web developer I haven't had any problems with it.
I used Django Tastypieapi (http://tastypieapi.org/). Deployed with wsgi, backend was mongodb. Worked perfectly fine. Documentation is also better than average.
I've just started using Morepath: http://morepath.readthedocs.org/
It's new, not fully baked yet, and yet it is amazingly powerful and simple to use.
It's new, not fully baked yet, and yet it is amazingly powerful and simple to use.
Another vote for Django Rest Framework, it's very good at getting an API going when prototyping.
I use Eve [1].
[1] http://python-eve.org/
[1] http://python-eve.org/
Flask+uwsgi+nginx. Simple, battle tested, just works.
Thanks!
Any particular points I should be aware of in this setup?
I've deployed many small websites using flask+uwsgi+nginx before, but for a high-volume API, there seem to be a number of "fragile" aspects to this, e.g. processes and threads settings, since WSGI is synchronous.
If I may ask, what's usually the weakest link in this setup, and what's the best way to monitor for problems and scale appropriately and intelligently as users grow? For example, let's say I set processes = 16, it hits the limit, but it turns out that I still have plenty of CPU and RAM to spare and I want it to dynamically make use of that?
I've deployed many small websites using flask+uwsgi+nginx before, but for a high-volume API, there seem to be a number of "fragile" aspects to this, e.g. processes and threads settings, since WSGI is synchronous.
If I may ask, what's usually the weakest link in this setup, and what's the best way to monitor for problems and scale appropriately and intelligently as users grow? For example, let's say I set processes = 16, it hits the limit, but it turns out that I still have plenty of CPU and RAM to spare and I want it to dynamically make use of that?
flask-restful if flask (powers Twilio API and was written by my co-founder), Django Rest Framework if Django