1. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!
    Скрыть объявление

Сообщение о завершении задачи на хост локальной сети

Тема в разделе "Техническая поддержка", создана пользователем cagoi, 4 июл 2018.

  1. cagoi

    cagoi A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    12 июн 2018
    Сообщения:
    16
    Симпатии:
    2
    Версия: A-Parser 1.2.246 Enterprise.

    Описание: При использовании адреса "http://localhost" в качестве параметра callURLOnComplete после завершения задачи вызова не происходит, а в главном логе приложения появляется запись:
    "[master] Call URL on complete error: 'http://localhost' 596 Resolve error: Not existing domain"
    Соответственно, проблема также затрагивает связь в Docker (если A-Parser в контейнере), т.к. хосты-названия контейнеров тоже не резолвятся.

    В качестве решения пока придётся опрашивать A-Parser о завершении.
     
  2. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.337
    Симпатии:
    1.795
    на данный момент A-Parser целиком полагается на внешний резолвер, без разрешения локальных запросов

    в данном случае рекомендуем просто указать IP 127.0.0.1 в случае localhost, или передавать конкретный IP контейнера для докера
    также можно указать локальный DNS сервер который будет обслуживать локальные домены
     
  3. cagoi

    cagoi A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    12 июн 2018
    Сообщения:
    16
    Симпатии:
    2
    Раз это не считается ошибкой, предлагаю отметить тогда это как предложение по улучшению.
    IP передавать в общем случае не вариант, т.к. они разные динамические. А вот предложение насчёт DNS-сервера я не совсем понял.
     
  4. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.337
    Симпатии:
    1.795
    поднять локальный DNS сервер, который будет следовать классической схеме резолвинга, учитывая localhost, /etc/hosts и т.д.
     
    relay нравится это.
  5. cagoi

    cagoi A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    12 июн 2018
    Сообщения:
    16
    Симпатии:
    2
    Всё ещё не понимаю. А как это поможет A-Parser, если он это как-то обходит? В Docker и так работает встроенный DNS-сервер, и программы в контейнерах по умолчанию спокойно связываются с другими локальными хостами (в т.ч. curl из консоли, например).
     
  6. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.337
    Симпатии:
    1.795
    Обратите внимание на https://a-parser.com/wiki/additional-settings/ в части указания DNS серверов
    Локальные программы на 99% используют функцию резолвинга ядра(gethostbyname и т.д.), которая заботится о чтении /etc/hosts, A-Parser в свою очередь выполняет прямые запросы исключительно к DNS серверам, которые указаны в настройках - по умолчанию это сервера Google
    8.8.8.8 и 8.8.4.4
     
    Metroid нравится это.
  7. cagoi

    cagoi A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    12 июн 2018
    Сообщения:
    16
    Симпатии:
    2
    Вот, опцию про DNS я не видел. В таком случае можно указать напрямую фиксированный адрес DNS-сервера Docker 127.0.0.11, на который выходят и который успешно используют другие локальные программы.

    Однако, так получилась другая проблема:
    [master] Call URL on complete error: 'http://nginx' 596 Can't connect(No route to host)

    Это я указал в config/config.txt строку "dns: 127.0.0.11"
     
  8. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.337
    Симпатии:
    1.795
    что показывает nslookup nginx 127.0.0.11 внутри контейнера с апарсером?
     
  9. cagoi

    cagoi A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    12 июн 2018
    Сообщения:
    16
    Симпатии:
    2
    То же, что и просто nslookup nginx:

    Server: 127.0.0.11
    Address: 127.0.0.11#53

    Non-authoritative answer:
    Name: nginx
    Address: 10.0.0.42
    Name: nginx
    Address: 10.0.0.58
     
  10. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.337
    Симпатии:
    1.795
    парсер перезапускался после изменения конфига?
    curl http://nginx/ работает?
     
  11. cagoi

    cagoi A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    12 июн 2018
    Сообщения:
    16
    Симпатии:
    2
    Да, перезапускался.
    curl http://nginx/ работает, возвращая ответ от сервера, в этом и загвоздка.
     
  12. cagoi

    cagoi A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    12 июн 2018
    Сообщения:
    16
    Симпатии:
    2
    Я заметил, что если попробовать тем же curl-ом сделать запрос именно на IP, в которые nslookup резолвит nginx, то второй IP рабочий (там ответ от сервера), а вот на первом именно тот самый "No route to host".
    Я не разбираюсь до такой степени в DNS — может быть, другие программы используют реализацию, которая в конечном счёте как-то перебирает IP и придерживается рабочего, а реализация, которую использует A-Parser, попадает только на первый и на этом заканчивает работу? Просто предположение.
     
  13. cagoi

    cagoi A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    12 июн 2018
    Сообщения:
    16
    Симпатии:
    2
    Какая-то проблема есть со стороны Docker. При перезапуске контейнера (в данном примере — nginx), он добавляется с новым IP, а старые не уходят. 2 раза перезапустил — теперь хост резолвится уже в 4 разных IP, из которых один 1 новый рабочий и 3 старых висят нерабочие с "No route to host".

    Получается, curl, например, как-то всё равно справляется, но видно, что он обходит адреса, т.к. от раза к разу подряд он то сразу получает ответ, то долго висит (видимо, неудачно попадает и тыкается во все нерабочие IP сначала), а A-Parser нет, но не знаю, можно ли назвать это виной A-Parser (должно ли ПО быть готово к наличию нерабочих IP в списке).
    Так или иначе пойду решать проблему с Docker-ом всё равно.
     
    #13 cagoi, 5 июл 2018
    Последнее редактирование: 5 июл 2018
  14. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.337
    Симпатии:
    1.795
    именно так, A-Parser использует только 1ый ип
     

Поделиться этой страницей