2015-10-10 2 views
0

Я использую сервер Bottle для реализации моего собственного сервера с использованием реализации, не столь удаленной от простого «мира привет» here, моя собственная реализация (без раздела маршрутизации, конечно):
bottleApp =bottle.app() bottleApp.run(host='0.0.0.0',port=80, debug=true)Ошибка обрыва трубы и сброс соединения с помощью peer 104

Мой сервер постоянно получаю отвечать на запросы все время, а затем я получаю в браузере: Connection reset by peer, broken pipe errno 32
журналы дают мне почти точно такой же стек следы, такие как в question.

Вот мои собственные журналы:
Broken pipe stack trace
connection reset by peer stack trace

То, что я пытался до сих пор, без успеха:

  1. Оберточные линию сервера запуска с попыткой за исключением, что-то подобное, показано here ответ «mhawke». Это остановило сообщения об ошибках в журналах, по-видимому, потому, что я их поймал в статье except, но проблема в том, что при обнаружении такого исключения это означает, что мы были выброшены из контекста метода run, и я хочу поймать его в это не приведет к падению моего сервера.
    Я не знаю, возможно ли его, не касаясь внутренних файлов реализаций bottle.

  2. Добавления этого перед строкой сервера выполнения:
    from signal import signal, SIGPIPE, SIG_DFL signal(SIGPIPE,SIG_DFL)
    Как предложил here, но мне кажется, что он не имел никакого влияния на получение не Разбитые трубы \ подключение сброса ошибки и сервер отклика.

  3. Я думал о том, чтобы попробовать второй ответ here, но я не знаю, где найти этот код в контексте сервера bottle.

+0

Чтобы получить помощь по этому вопросу, я думаю, вам нужно будет опубликовать код для полного минимального примера проблемы. –

+0

На самом деле нет никакого дополнительного кода, который я уже писал или упоминал, сервер только что установлен и забыл – JavaSa

+0

Чтобы отладить это, мы должны иметь возможность запускать то же самое, что вы используете. –

ответ

0

Это звучит как проблема с разрешениями или межсетевой экран.

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

Я вижу, что вы используете что-то, что кажется Posix (Linux/Unix/OSx). Если вы опубликуете, какую ОС вы используете, я могу отредактировать этот ответ, чтобы уточнить, как открыть брандмауэр и выполнить привилегированные команды (возможно, sudo, но кто знает).

Смежные вопросы