Отправка изображения на сервер: HTTP POST против пользовательского протокола TCP - PullRequest
0 голосов
/ 21 марта 2012

Я работаю над созданием приложения на python для обработки изображений. Клиент (не веб-браузер) отправляет изображение и некоторые текстовые данные на сервер, и ответ сервера основывается на полученном изображении.

Один из способов - использовать веб-сервер + модуль WSGI, чтобы клиенты отправляли HTTP-запрос POST (используя multipart / form-data). Затем http-сервер «обрабатывает» загруженное изображение и другие данные, которые может использовать программа.

Другой метод заключается в создании протокола, который отправляет только необходимые данные и обрабатывается в приложении. Приложение будет делать все (прослушивание порта и т. Д.).

Является ли один из них лучшим «лучшим» способом (если да, какой?), Или это более предпочтительный способ (или есть другой способ, который лучше)?

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

По моему мнению, HTTP - это идеальный протокол для отправки файлов или больших данных, и его очень распространенное использование, легко подходящее для любой ситуации.Если вы используете самостоятельно созданный протокол, вам может быть сложно преобразовать его, когда вы получаете другие потребности клиента, например веб-API.

Возможно, дискуссии об отсутствии мгновенности и гибкости в HTTP заставят вас сомневаться в выборе HTTP, но это в основном что-то о мгновенном обмене сообщениями и проталкивании сервера, есть лучшие протоколы.Но когда дело доходит до стабильности и гибкости, HTTP всегда является хорошим выбором.

0 голосов
/ 21 марта 2012

Я полагаю, что это зависит от ваших потребностей, размера изображений и общих знаний о сетевом программировании.

С точки зрения простоты, размещение изображения на веб-сервере с использованием WSGI будет довольно простым,и вам не придется беспокоиться об обработке соединений, сокетов, обработке ошибок из-за загруженности сетевых портов и т. д.

Еще один аргумент в пользу этого подхода заключается в том, что вы можете легко повторно использовать эту «функцию», если вы ужепусть он работает на веб-сервере, скажем, с помощью клиента браузера.Это может быть не одна из ваших потребностей сейчас, но дверь остается открытой.

Это был бы мой выбор.

Кроме того, в Python у вас есть огромное множество веб-фреймворков на выборот Django, который, вероятно, является огромным излишним для ваших нужд, до чего-то более простого, например http://flask.pocoo.org/, которое может просто удовлетворить ваши потребности и действительно просто настроить.

...