Использование AJP для выполнения запросов от Python к веб-серверу Java - PullRequest
0 голосов
/ 28 августа 2011

Мне нужно реализовать веб-приложение Python, которое работает с данными, доступными через веб-сервисы (API с GET-запросами и ответами JSON).

Сервер API реализован на Java.Предварительно тесты показывают значительные издержки, если вызовы API выполняются через urllib2 (соединение открывается и закрывается для каждого запроса).

Если я включу AJP на сервере API, какую библиотеку мне следует использовать для выполнения запросов с использованием протокола AJP от Python?Я погуглил Plup, но не могу найти четкого способа запрашивать и использовать данные в Python, а не просто проксировать их в другом месте.

Является ли использование AJP хорошим решением?Очевидно, что мне нужно поддерживать пул соединений для выполнения запросов AJP, но я не могу найти ничего связанного с Plup.

Спасибо.

1 Ответ

1 голос
/ 28 августа 2011

Понятия не имею, что такое AJP.Кроме того, вы не открыли, что означает «чрезмерные накладные расходы», поэтому я мог бы быть бедным человеком, чтобы ответить на этот вопрос.

Но на вашем месте я бы сначала попробовал несколько хитростей:

Включить HTTP 1.1 keep-alive на urllib2

(здесь приведен пример использования другой библиотеки Python urllib2 с keep alive )

HTTP 1.1 keep-alive соединения не закрывают канал TCP / IP для последующих запросов.

Используйте веб-сервер Spawning / eventlets, который выполняет неблокирующее исправление ввода-вывода для сокетов urllib / Python.

http://pypi.python.org/pypi/Spawning/

Это сделает распараллеливание в Python гораздо более надежным, когда накладные расходы в приложении являются вводом-выводом, а процессор не обрабатывает запросы.JSON-декодирование редко связано с процессором.

С помощью этих двух приемов мы смогли потреблять 1000 запросов / сек в нашем веб-приложении Python с API-сервера, поддерживаемого Microsoft IIS (ферма).

...