CherryPy Hello World ошибка - PullRequest
       22

CherryPy Hello World ошибка

13 голосов
/ 20 апреля 2009

Когда я запускаю CherryPy Hello World:

import cherrypy

class HelloWorld:
    def index(self):
        return "Hello world!"
    index.exposed = True

cherrypy.config.update({'server.socket_port': 8080,})
cherrypy.quickstart(HelloWorld())

... Я получаю следующее: IOError: Порт 8080 не привязан к «localhost». Что бы это могло быть?

Ответы [ 9 ]

10 голосов
/ 14 февраля 2012

Если вы пытаетесь развернуть CherryPy на Heroku, где вы не можете использовать loopback для проверки того, действительно ли вы открыли порт, тогда вам нужно просто отключить функцию wait_for_occupied_port() CherryPy, чтобы проверка самосогласованности CherryPy не решала что на самом деле не удалось начать. Вот три строки, которые я использую для исправления CherryPy, чтобы он работал на Heroku:

    from cherrypy.process import servers
    def fake_wait_for_occupied_port(host, port): return
    servers.wait_for_occupied_port = fake_wait_for_occupied_port
7 голосов
/ 20 апреля 2009

Возможно, у вас есть что-то еще, слушающее этот порт.

В Linux сделать:

netstat -pnl | grep 8080

И посмотри, какой процесс слушает на 8080

В Windows используйте что-то вроде TCPView , чтобы сделать то же самое.

3 голосов
/ 29 октября 2011

Как писал Джейсон Р. Кумбс , существует проблема с отключенным шлейфовым устройством. На сайте heroku.com петля отключена, поэтому CherryPy вылетит. Я подал ошибку для этого.

Обновление: Отмечено как разрешенное.

2 голосов
/ 19 июля 2010

Я столкнулся с этой проблемой вчера на сервере Ubuntu Linux. Я потратил пару часов, пытаясь отследить ошибку в коде CherryPy, прежде чем понял, что сообщение об ошибке является очень общим. Он выдаст это сообщение об ошибке, даже если хост не владеет IP-адресом, к которому сервер пытается привязаться. В моем случае интерфейс обратной связи (lo, 127.0.0.1) был отключен. Таким образом, даже если я установлю server.socket_host='0.0.0.0', попытка проверить порт, wait_for_occupied_port, будет неудачной (так как предполагается, что интерфейс обратной связи всегда доступен). После повторного включения интерфейса обратной связи сервер CherryPy будет запускаться нормально.

Обновление: CherryPy 3.2.3 имеет исправление для этой конкретной проблемы. До выхода версии 3.2.3 сборки доступны для загрузки проекта CherryPy .

1 голос
/ 04 марта 2016

Если вы работаете в OS X, попробуйте позвонить:

sudo lsof -i :8080

, который сообщит вам процесс, использующий этот порт.

1 голос
/ 30 апреля 2009

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

MyProj.conf:

[global]
server.socket_host = "127.0.0.1"
server.socket_port = 8080
server.thread_pool = 10

MyProj.py

import os
import cherrypy

class HelloWorld:
    def index(self):
        return "Hello world!"
    index.exposed = True

# Assumes the config file is in the directory as the source.    
conf_path = os.path.dirname(os.path.abspath(__file__))
conf_path = os.path.join(conf_path, "MyProj.conf")
cherrypy.config.update(conf_path)
cherrypy.quickstart(HelloWorld())

Это определенно работает здесь.
Я использую Python 2.6.1 и CherryPy 3.1.1 и запускаю скрипт с -W ignore:

c:\My_path> python -W ignore MyProj.py

Если вы находитесь под * nix, вы должны поставить -W ignore в комментарии #! вверху файла.

1 голос
/ 29 апреля 2009
  • Используйте его на другом порту (например, 8000)
  • Читать о ConfigApi (еще раз)
  • Попробуйте последнюю версию, а не 3.0
  • Также это может быть вызвано некоторыми брандмауэрами Windows (Eset Smart Security или, возможно, другие). Так что просто используйте его на другом порту.
0 голосов
/ 11 апреля 2013

У меня была такая же проблема при запуске CherryPy 3.2.2 на моем ПК с Win7 с Python 3.3 Сервер будет запускаться нормально, а затем через пару минут зависнет.

Я применил патч из упомянутой CherryPy 3.2.3 laurasia. Но это не помогло.

Поэтому я должен был закомментировать строки, в которых ошибка появлялась в самом конце python\Lib\site-packages\cherrypy\process\servers.py, чтобы предотвратить смерть сервера:

...
#    if host == client_host(host):
#        raise IOError("Port %r not bound on %r" % (port, host))
...
0 голосов
/ 29 июня 2009

AVG Anti-Virus вызывал эту проблему для меня. Удаление AVG (далеко от идеала) сделало свое дело. Я подозреваю, что сканер ссылок не может быть отключен.

...