Понятия не имею, что такое 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 (ферма).