2009-06-29 3 views
0

Я развертываю приложение mod_wsgi поверх Apache и имею клиентскую программу, которая использует Curl.Повторное использование соединения с Curl, Apache и mod_wsgi

На стороне пользователя CURL api на стороне пользователя я пытаюсь повторно использовать соединение, но, глядя на соединения из wirehark, я вижу, что для каждого HTTP-запроса/ответа создается новое соединение.

В конце каждого запроса HTTP, заголовок ответа HTTP имеет "Connection: Close"

Это то же самое, как Keep-Alive? Что мне нужно сделать на стороне Apache/Mod_wsgi, чтобы включить повторное использование соединений?

ответ

3

Обычно вам не нужно что-либо делать с Apache, так как поддержка активных соединений обычно включена по умолчанию. Посмотрите директиву KeepAlive в конфигурации Apache, чтобы определить, для чего она установлена.

Кроме того, для поддержания соединений для работы приложение WSGI должно устанавливать длину содержимого в ответе или возвращать список для ответа, в котором список содержит только одну строку. В этом последнем случае mod_wsgi автоматически добавит длину содержимого для ответа. Ответ, как правило, также должен быть успешным ответом, поскольку большинство ответов об ошибках приведет к закрытию соединения независимо.

Даже если все это сделать, проблема заключается в том, позволяет ли возможность зависания нескольких URL-адресов даже поддерживать непрерывные соединения. Очевидно, что отдельные вызовы curl не смогут, так что вы даже задаете этот вопрос, предположите, что вы пытаетесь использовать эту функцию завитка. Только другой вариант был бы, если бы вы использовали пользовательский клиент, связанный с libcurl и используя его библиотеку, и поэтому вы имели в виду libcurl.

Обратите внимание, что если доступ к Apache через прокси-сервер, прокси-сервер может не реализовывать поддержку, поэтому остановите работу всего механизма.

Чтобы получить дополнительную информацию, необходимо знать, как вы используете завиток.