Я сделал клиентское приложение, которое использует HTTP для связи с сервером Python 2 с использованием простого API. Сервер использует ORM SQLAlchemy достаточно широко, чтобы обслуживать данные для этих HTTP-запросов. Проблема в том, что использование моего процессора довольно велико даже при наличии нескольких активных клиентов. Этот сервер должен иметь возможность одновременно обслуживать несколько сотен клиентов примерно в 1 запросе на секунду для каждого клиента, поэтому он все равно должен быть управляемым (или я надеюсь).Как улучшить производительность SQLAlchemy?
Как повысить производительность? Я знаю, что проблема в ORM, поскольку cProfile показывает это довольно четко. По-видимому, один запрос выполняет около 10000 команд Python, которые кажутся довольно странными. Я попробовал подключить различные двигатели/серверы баз данных и сменил интерпретатора на Pypy просто для удовольствия, но он явно не помог исходной проблеме, а также не улучшил производительность.
Что я здесь делаю неправильно? Я действительно надеюсь, что это «хорошо, ду!» проблема.
Должны ли мои отношения быть другого типа? нетерпеливый, ленивый, динамичный и т. д.? Прямо сейчас, я не указываю ничего конкретно.
Помощь с благодарностью.
взгляните на мой ответ http://stackoverflow.com/questions/1171166/how-can-i-profile-a-sqlalchemy-powered-application/1175677#1175677 для запуска некоторых мест – zzzeek