Вопрос

Я использовал PyAMF для написания серверной части для гибкого приложения, которое будет запрашивать разные группы из сотен различных изображений в зависимости от того, что нужно клиенту.Я использовал WSGI-сервер "simple_server", который PyAMF предоставляет при разработке гибкого кода.Теперь я готов написать надежный серверный модуль, который сможет извлекать изображения из базы данных MySQL и отправлять их как можно быстрее и эффективнее множеству одновременных клиентов.

Документация PyAMF великолепна, потому что в ней содержится много примеров для подражания, однако я не совсем понимаю, какой бэкэнд я пытаюсь создать.

Нужен ли мне SocketServer, или сервер WSGI, или что-то вроде Twisted, или web2py, или Tornado?Они вообще все разные?:) Должен ли я вместо этого использовать модули Apache (mod_wsgi или modjy или mod_python)?

Я понимаю, что это, вероятно, касается многих открытых дебатов, так что, может быть, вы могли бы просто указать мне на какие-нибудь хорошие резюме этих дебатов?

Здорово, что у меня так много вариантов, но как мне выбрать?

Это было полезно?

Решение

Короткий ответ, конечно, заключается в том, что это зависит от требований вашего проекта.Сколько одновременных подключений - это "много"?Сколько времени программиста вы можете потратить на решение проблемы?Сколько аппаратных средств вы можете использовать для решения проблемы?...и т.д...

Если вы планируете иметь много одновременных клиентов, трудно превзойти Twisted в мире Python.Однако вам придется работать с вашей базой данных асинхронно, чтобы избежать блокировки, и в зависимости от того, насколько сложны ваши взаимодействия с базой данных, это может быть немного затруднительно.По сути, вы ограничены либо использованием twisted.enterprise.adbapi, либо созданием собственной интеграции с twisted-ORM.

Если вы предпочитаете иметь "простой" код базы данных (т.е.вы хотите использовать ORM), вам лучше выбрать проект (TurboGears / Pylons / plain wsgi), вероятно, размещенный с использованием Apache и mod_wsgi.Это может быть довольно масштабируемое решение, и вы получаете много материала бесплатно, используя эти фреймворки, но это может быть больше, чем вам нужно.

Я бы не стал использовать один из многих обычных серверов python wsgi (wsgiref, paster и т.д.) в производстве, если вы действительно хотите высокую производительность.

Удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top