2013-12-12 3 views
2

Дело в том, что у нас есть большой API для сборки, и моя команда выбрала python в качестве платформы реализации. API действительно не нуждается в каких-либо веб-страницах (templating) - просто принимая запросы GET/POST и отвечая на xml/json.Выбор http-сервера для python api

Вопрос в следующем: какой предпочтительный сервер http для развертывания python api для масштаба производства? Мы рассматриваем django и cherrypy как структуру, и у них есть встроенные серверы, но они, похоже, являются скорее инструментом разработки, чем масштабируемым супер-быстрым программным обеспечением для производства.

Java имеет все контейнеры сервлетов/приложений (jboss, tomcat, glassfish и т. Д.), PHP имеет Apache HTTPD и/или Nginx - и как насчет python?

+1

Это звучит как что-то, что вы могли бы легко добавить в google. .. – M4rtini

+0

Типичная конфигурация - [uWSGI] (http://uwsgi-docs.readthedocs.org/en/latest/) или [Gunicorn] (http://gunicorn.org/) за nginx. –

ответ

2

Возможно, вы захотите conform to the WSGI, тогда вам не нужно привязывать реализацию к определенному HTTP-серверу.

Подробнее:

+0

До тех пор, пока мои рамки (django или cherrypy) соответствуют WSGI (они оба делают), я могу развернуть свой API на любом WSGI-совместимом сервере, верно? Вы рекомендуете какой-либо сервер? – ducin

+0

Да, это так. У меня нет большого опыта работы со многими серверами, но у меня был успех с [Apache Httpd] (http://httpd.apache.org) и [mod_wsgi] (https://code.google.com/p/ modwsgi /) в прошлом. – elias

0

Если вы хотели бы использовать питона, проверьте Gunicorn и uWSGI. Первый - это сервер WSGI, который будет работать с большинством фреймворков. Во-вторых, язык агностик, вероятно, лучше. Я бы посоветовал начать с Gunicorn, проще переключиться с сервера по умолчанию, причем настройка веб-сервера (nginx) проще.

Не используйте веб-сервер по умолчанию на производстве! Werkzeug также разрабатывается.

Какая структура для выбора вашего сервера API зависит от потребностей, размера функциональности и времени разработки. Django - это безопасный инструмент, он обрабатывает многие проблемы безопасности, но может потребоваться больше времени для обновления кода. Разработка флеш быстрее, но вы можете потратить больше времени на настройку базы данных/ORM/настроек.

Для простого API я бы порекомендовал json-rpc, который прост в использовании и имеет поддержку Django. Для более сложного API может быть лучше проверить рамки REST.