2012-02-25 43 views
2

我試圖在Ubuntu測試蟒蛇(與龍捲風)的這個「世界你好」:如何停止龍捲風web應用程序?

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() 

我的命令行運行這個Web應用程序:
蟒蛇hello.py

不過,我可以只運行一次'hello.py'。現在我正在更改代碼並希望再次運行「hello.py」。我認爲我需要停止之前運行的'hello.py'實例,因爲它採用的是8888端口。但只是沒有線索如何做到這一點。

我嘗試 「進口tornado.httpserver」 使用功能 「httpserver.stop()」,但蟒蛇報道在終端即:

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

我試試 「HTTPServer.stop()」 的,但它給出了同樣的錯誤!

+0

你應該使用'tornado.httpserver.stop()'因爲你已經導入了'tornado.httpserver'模塊 – Phani 2012-02-25 06:36:10

+0

tornado.httpserver是不是包?我試圖使用tornado.httpserver.HTTPServer.stop()但它失敗了2 – jondinham 2012-02-25 08:29:12

+0

可能的重複[如何停止Tornado web服務器?](http://stackoverflow.com/questions/5375220/how-doi-i-停止龍捲風web服務器) – user 2013-09-27 06:49:59

回答

3

如果你的終端沒有連接,你可以殺死pid,如果是Ctrl + c。

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

+0

是的,但這是手動。我希望代碼在編輯時自動停止龍捲風以應用python代碼中的更改。 – jondinham 2012-02-25 05:01:43

+0

沒有。您將需要重新啓動服務器。或發送SIGHUP也許? – 2012-02-25 05:03:29

+1

請查看http://groups.google.com/group/python-tornado/browse_thread/thread/87bc2451d79fa110/30665b2717397152 – 2012-02-25 05:04:19

3

A. Importing in python是從Java \ C#不同。要導入指定詞你應該寫類似

from tornado import ioloop,web,httpserver 

,或者使用的項目,如進口(與IE tornado.前綴)

B.當你calling ioloop.IOLoop.instance().start()此功能將運行,直到它捕捉到一個例外,過程中關閉或其中一個註冊手柄電話ioloop.IOLoop.instance().stop()。當任何導入模塊的代碼改變時它也可以重新啓動。