Как остановить торнадо веб-приложения? - PullRequest
2 голосов
/ 25 февраля 2012

Я пытаюсь проверить этот "привет мир" python (с торнадо) на Ubuntu:

import tornado.ioloop
import tornado.web
import tornado.httpserver

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    httpserver.stop()
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

Моя командная строка для запуска этого веб-приложения:
python hello.py

Однако я могу запустить этот hello.py только один раз. Теперь я изменяю код и хочу снова запустить hello.py. Я думаю, что мне нужно остановить ранее запущенный экземпляр 'hello.py', потому что он принимает порт 8888. Но просто не имею понятия, как это сделать.

Я пытаюсь "импортировать tornado.httpserver", чтобы использовать функцию "httpserver.stop ()", но python сообщает на терминале, что:

Traceback (most recent call last):
  File "hello.py", line 14, in <module>
    httpserver.stop()
NameError: name 'httpserver' is not defined

Я тоже пытаюсь "HTTPServer.stop ()", но выдает ту же ошибку !!!

Ответы [ 2 ]

3 голосов
/ 25 февраля 2012

A. Импорт в python отличается от java \ C #. Чтобы импортировать указанные термины, вы должны написать что-то вроде

   from tornado import ioloop,web,httpserver

или использовать элементы как импортированные (т.е. с префиксом tornado.)

B. Когда вы calling ioloop.IOLoop.instance().start(), эта функция будет работать до тех пор, пока она не поймает исключение, процесс не будет закрыт или один из зарегистрированных обработчиков не вызовет ioloop.IOLoop.instance().stop(). Также он может перезапуститься при изменении кода любого импортированного модуля.

3 голосов
/ 25 февраля 2012

если ваш терминал не подключен, вы можете просто убить pid, если это Ctrl + c.

связанная ссылка:http://groups.google.com/group/python-tornado/browse_thread/thread/87bc2451d79fa110/30665b2717397152?pli=1

...