Почему использование Python3 urllib.request.Request вызывает «сброс соединения по пиру», когда url является локальным хостом vhost? - PullRequest
0 голосов
/ 30 января 2020

Я использую Devilbox для своей локальной веб-разработки (в основном, связанной с WordPress). Я работал над приложением Python 3, которое отправляет форму при установке Devilbox vhost WordPress. Этот Python скрипт, над которым я работаю, позволяет мне быстро настроить экземпляры WordPress для работы с плагином / темой.

Проблема, с которой я сталкиваюсь, заключается в том, что я подключаюсь через urllib.request. в итоге «ConnectionResetError: [Errno 104] Сброс соединения по пиру»

Вот соответствующий код, который я использую для подключения:

        wp_host = 'http://' + vhost_name + '.loc'

        values = {
            'dbname': vhost_name,
            'uname': 'root',
            'pwd': '',
            'dbhost': database_name + '.loc',
            'prefix': 'wp_'
        }

        install_step_two_url = wp_host + '/wp-admin/setup-config.php?step=2'
        print('install step two url: ' + install_step_two_url)

        req = urllib.request.Request(url=install_step_two_url,
            data=urllib.parse.urlencode(values).encode(),
            headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded'})
        response = urllib.request.urlopen(req)

Я попытался добавить порт 80 после vhost Домен безрезультатно. Буду очень признателен за любую помощь или любые советы, чтобы направить меня в правильном направлении.

1 Ответ

0 голосов
/ 30 января 2020

Предположим, что vhost_name это "foo".

когда я подключаюсь ... [Я получаю] ... "Сброс соединения по пиру".

Вы не используете веб-сервер, который прослушивает запросы порта 80.

Проверьте с помощью:

$ telnet foo.loc http

или:

$ netstat -an | grep 80; sudo lsof -i :80

Вы хотите указать vhost_name на действительном хосте, который предлагает службу HTTP.

Возможно, у вашего хоста есть два IP-адреса, скажем, 10.2.3.4 и 127.0.0.1, и ваш веб-сервер выдал bind() против только одного из них.

...