Учебник webpy «Hello World»: webpy не может найти класс

Когда я запускаю пример кода в процессе этого руководства, я не сразу получаю сообщение об ошибке, но когда я перехожу по URL-адресу (ht[break_link]tp://0.0.0.0:8080/), я получаю сообщение «Firefox не может установить соединение с сервером по адресу 0.0.0.0:8080». Я пробовал это и с Chrome, но не повезло.

В какой-то момент webpy выдал мне ошибку типа «не удалось найти индекс класса», но я не уверен, что я сделал, чтобы получить ошибку или как ее воспроизвести.

Это файл. Это то же самое, что и учебник, который я связал, только с добавленными операторами печати:

import web

# Handle the url / with the index class.
urls = {
    '/', 'index'
}

class index:
    def GET(self):
        return "Hello, world!"
        print 'inside get'
print 'after index'

print "-------"
print globals()
print "-------"

if __name__ == '__main__':
    print "hi"
    app = web.application(urls, globals())
    print "hello"
    app.run()
    print "last"

Выходы:

after index
-------
{'web': <module 'web' from 'C:\Python27\lib\site-packages   \web\__init__.pyc'>, 'index': <class __main__.index at 0x0324F030>,     '__builtins__': <module '__builtin__' (built-in)>, '__file__': 'code.py',     '__packa
ge__': None, 'urls': set(['index', '/']), '__name__': '__main__',     '__doc__': None}
-------
hi
hello
http://0.0.0.0:8080/
last

(«последний» не отображается, пока я не нажму Ctrl-C) webpy не замечает индексный класс, но я понятия не имею, почему.


person Tiream    schedule 29.01.2017    source источник


Ответы (1)


Когда он печатает http://0.0.0.0:8080/, веб-сервер работает в цикле (из-за вызова app.run()), поэтому он не будет печатать «последний», пока вы не уничтожите веб-сервер. Вот почему вы не видите «последний» до Ctrl-C. Все работает нормально.

http://0.0.0.0:8080 просто говорит, что веб-сервер прослушивает «Все действительные адреса IPv4» на локальном компьютере. 0.0.0.0 не настоящий адрес. Чтобы получить доступ к вашему веб-серверу, укажите в браузере реальный IP-адрес.

Если вы используете этот веб-сервер на своем локальном компьютере, вы, вероятно, можете использовать http://127.0.0.1:8080/, который (чаще всего) относится к вашему локальному компьютеру. Если вы запускаете этот веб-сервер на удаленном компьютере, вам необходимо указать его IPv4-адрес или имя хоста вместо 0.0.0.0.

person pbuck    schedule 29.01.2017
comment
Спасибо, я действительно был в замешательстве. - person Tiream; 30.01.2017