Быстрый тест, если веб-страница предлагает асинхронный HTTP? - PullRequest
1 голос
/ 08 сентября 2010

Я получаю текущие данные из веб-канала другой компании.Это простая выборка XML-файла по HTTP.Они не предоставили мне много документации - только URL.

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

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

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

(Бонусные баллы за независимое от платформы решение на основе Python, но я возьму то, что смогу получить.)

Ответы [ 4 ]

1 голос
/ 08 сентября 2010

Чтобы избежать ненужной загрузки, я бы проверил etags и Last-updated заголовки, как описано здесь

http://diveintopython3.ep.io/http-web-services.html

1 голос
/ 08 сентября 2010

То, что вы хотите, это потоковое HTTP; прочитайте эту страницу . « Comet » - это то, что обычно называют этой технологией. Одной из реализаций является Ajax Push Engine (APE) ; На странице, которую я только что дал вам, есть несколько других.

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

В качестве альтернативы вы можете использовать периодическое обновление («опрос»), и преимущества этого метода: вам не нужно дополнительное программное обеспечение на сервере, и это можно сделать без участия сервера, с которым вы опрашиваете (это невозможно использовать Comet, если запрашиваемый сервер не установит его).

Дополнительную информацию и рекомендации по сокращению использования полосы пропускания при опросе см. на этой странице . Некоторые из них потребуют определенных усилий с сервера, с которого вы опрашиваете.

1 голос
/ 08 сентября 2010

Мне неизвестен какой-либо метод проверки, поддерживает ли веб-сервер технологию push.
Вам следует спросить эту компанию, может ли быть принят подход Comet , чтобы избежать опроса.

Для решения на базе Comet Python, посмотрите здесь .

1 голос
/ 08 сентября 2010

Предлагаю вам прочитать эту статью в Википедии на эту тему. То, что вы хотите, безусловно, возможно, однако может поддерживаться не всеми браузерами.

Тем не менее ... Я вообще рекомендую не использовать push-технологии в Интернете, поскольку они истощают ресурсы сервера намного быстрее, чем парадигма запрос / ответ.

Возможно, есть другой способ? Частый опрос, чтобы увидеть, является ли измененный файл хотя бы небольшой полезной нагрузкой ... почему он неудовлетворителен для обеих сторон?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...