在Tornado app中设置断点

时间:2013-06-10 18:46:37

标签: debugging python-2.7 tornado

我怎样才能在龙卷风应用程序中设置断点?
我试过pdb,但是Tornado应用程序接缝在我的应用程序中忽略了我的pdb.set_trace()命令。

2 个答案:

答案 0 :(得分:2)

如果您使用foreman运行应用程序,则可以在根项目文件夹中的.env文件中设置环境变量。 在我的.env文件中设置下面的env变量确实勾选了我。

PYTHONUNBUFFERED =真

现在我可以在我的应用程序中设置代码断点,并在使用foreman运行应用程序时将输出打印到服务器日志。

答案 1 :(得分:1)

你把pdb.set_trace()放在哪里......?这对我有用:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import pdb 

from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        greeting = self.get_argument('greeting', 'Hello')
        reself.write(greeting + ', friendly user!')

if __name__ == "__main__":
    tornado.options.parse_command_line()
    app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    pdb.set_trace()
    tornado.ioloop.IOLoop.instance().start()

会话:

$ python test.py
> /home/mariusz/Dokumenty/Projekty/Testy/test.py(24)<module>()
-> tornado.ioloop.IOLoop.instance().start()
(Pdb) break 16
Breakpoint 1 at /home/mariusz/Dokumenty/Projekty/Testy/test.py:16
(Pdb) continue
> /home/mariusz/Dokumenty/Projekty/Testy/test.py(16)get()
-> self.write(greeting + ', friendly user!')
(Pdb) step
--Call--
> /usr/local/lib/python2.7/dist-packages/tornado/web.py(497)write()
-> def write(self, chunk):
(Pdb) step
> /usr/local/lib/python2.7/dist-packages/tornado/web.py(512)write()
-> if self._finished:
(Pdb) step
> /usr/local/lib/python2.7/dist-packages/tornado/web.py(516)write()
-> if isinstance(chunk, dict):
(Pdb) 

continue放入上面的代码后调试器停止了,因为我不得不在浏览器中轮询http://localhost:8000/以实际调用RequestHandler函数。