【问题标题】:How to stop a tornado web application?如何停止龙卷风 Web 应用程序?
【发布时间】:2012-02-25 04:50:40
【问题描述】:

我正在尝试在 ubuntu 上测试这个 python 的“hello world”(带有龙卷风):

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()”,但它给出了同样的错误!!!

【问题讨论】:

  • 你应该使用tornado.httpserver.stop(),因为你已经导入了tornado.httpserver模块
  • tornado.httpserver 是不是这个包?我尝试使用 tornado.httpserver.HTTPServer.stop() 但失败了 2

标签: python tornado


【解决方案1】:

如果你的终端没有连接,你可以直接杀死 pid,如果它是 Ctrl + c。

相关链接:
http://groups.google.com/group/python-tornado/browse_thread/thread/87bc2451d79fa110/30665b2717397152?pli=1

【讨论】:

【解决方案2】:

A. Importing in python 与 java\C# 不同。要导入指定的术语,您应该编写类似

   from tornado import ioloop,web,httpserver

或使用导入的项目(即带有tornado.前缀)

B.当您是calling ioloop.IOLoop.instance().start() 时,此函数将一直运行,直到它捕获到异常、进程关闭或已注册的句柄之一调用ioloop.IOLoop.instance().stop()。当任何导入模块的代码发生更改时,它也可以重新启动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    相关资源
    最近更新 更多