Где я запускаю с веб-бота? [закрытый]

Цепочка блокировки возникает, когда работник заблокирован другим работником. A не может продолжаться из-за B. Цепочка может быть длиннее: A блокируется B, B блокируется C, C блокируется D.

Тупик - это когда цепочка замков образует петлю. A блокируется B, B C, C, A и цепь образовала петлю, прогресс невозможен.

Типичным способом предотвращения взаимных блокировок является использование иерархий блокировок: если блокировки всегда выполняются каждым рабочим в одном и том же порядке, то взаимные блокировки невозможны, поскольку каждая блокировка происходит между рабочим, который удерживает блокировки, ранжированные X, и ожидает ранжированные ресурсы Y, где X> Y всегда. Цикл не может образоваться в этом случае, так как он потребует, чтобы хотя бы один рабочий пошел против иерархии, чтобы закрыть цикл. Такова теория, по крайней мере. В prcatice очень и очень сложно придумать реалистичные иерархии (и нет, адрес ресурса не работает).

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

17
задан Ciro Santilli 新疆改造中心法轮功六四事件 25 November 2015 в 09:31
поделиться

4 ответа

Это не обязательно должен быть Python, я видел это на PHP и Perl, и вы, вероятно, можете сделать это на многих других языках. Общий подход:

1) Вы даете своему приложению URL-адрес, и оно делает HTTP-запрос к этому URL-адресу. Думаю, я видел это с помощью php / wget. Возможно, существует множество других способов сделать это.

2) Отсканируйте HTTP-ответ на предмет других URL-адресов, которые вы хотите «щелкнуть» (на самом деле, отправив им HTTP-запросы), а затем отправьте им запросы. Анализ ссылок обычно требует некоторого понимания регулярных выражений (если вы не знакомы с регулярными выражениями, освежите их в памяти - это важный материал;)).

6
ответ дан 30 November 2019 в 14:25
поделиться

Я бы рекомендовал использовать элемент управления WebBrowser пакета .NET. Вы можете получить доступ ко всем элементам DOM и полностью взаимодействовать с любым веб-сайтом. Вот краткая статья

Если вы все еще предпочитаете python, Mechanize может быть хорошим способом сделать это.

4
ответ дан 30 November 2019 в 14:25
поделиться

Я бы порекомендовал Python Mechanize библиотека. Он разработан как имитация браузера. Я использовал его для управления несколькими веб-интерфейсами из скрипта.

2
ответ дан 30 November 2019 в 14:25
поделиться

Я бы, наверное, начал с Twill - вы можете использовать его язык сценариев или Python API.

1
ответ дан 30 November 2019 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: