面面观 | 使用python tornado web进行开发

Posted 极客脑司机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面面观 | 使用python tornado web进行开发相关的知识,希望对你有一定的参考价值。

1,使用tornado


因为要开发股票系统,都是使用python进行开发的。 所以也要使用一个python的web框架。选择了那么多,还是找了一个性能比好的。

毕竟做的并不是一个很admin系统的项目。django 感觉还是不适合。

扩展起来,感觉上tornado 性能会更强悍。


2,博客demo


一个非常简单的博客系统: https://github.com/tornadoweb/tornado/tree/master/demos/blog

发现根本就不支持很久不更新的demo了。而且我的环境使用的是python3的。 tensorflow 啥的都是按照python3 的进行的。语法还是严格的。

需要稍微的修改下: sed -i -e 's/itertools\.izip/zip/g' /usr/local/lib/python3.5/dist-packages/torndb.py 因为python3 的lib库没有 itertools,直接用zip替换掉。



3,设置数据


设置路由和配置。


class Application(tornado.web.Application):

    def __init__(self):

        handlers = [#设置路由

            (r"/", HomeHandler),

            (r"/stock/api_data", GetStockDataHandler),

            (r"/stock/data", GetStockhtmlHandler),

        ]

        settings = dict(#配置

            template_path=os.path.join(os.path.dirname(__file__), "templates"),

            static_path=os.path.join(os.path.dirname(__file__), "static"),

            xsrf_cookies=True,

            #cookie加密

            cookie_secret="027bb1b670eddf0392cdda8709268a17b58b7",

            debug=True,

        )

        super(Application, self).__init__(handlers, **settings)

        # Have one global connection to the blog DB across all handlers

        self.db = torndb.Connection(

            host=mysql_HOST, database=MYSQL_DB,

            user=MYSQL_USER, password=MYSQL_PWD)



class BaseHandler(tornado.web.RequestHandler):

    @property

    def db(self):

        return self.application.db



使用Handler类:



class HomeHandler(BaseHandler):

    @gen.coroutine

    def get(self):

        self.render("index.html", entries="hello")



设置render。第一个参数是模板页面,第二个是数据。

在handler里面可以直接使用数据的链接



  web_size = self.db.query(" SELECT count(1) as num FROM USER_INFO ")


页面中显示:



    显示对象数据

    {{ stockWeb.name }}

    

    循环显示list数据

    {% for column_name in stockWeb.column_names %}

        <th>{{ column_name }}</th>

    {% end %}


项目结构:



---web

    +---static

    +---templates

    +---main.py


static 是静态资源目录。 templates是模板文件。配合数据显示。

启动main函数:



def main():

    tornado.options.parse_command_line()

    http_server = tornado.httpserver.HTTPServer(Application())

    port = 9999

    http_server.listen(port)

    tornado.ioloop.IOLoop.current().start()

    

    

if __name__ == "__main__":

    main()


4,总结


tornado 还是非常简单的使用的。 做web开发的时候java并不是唯一的解决。其他的像python和golang也是可以做开发的。 并且效率也挺高的,使用合适的技术解决问题就可以了。 剩下的时间下班早点回家了。

做一个股票系统都使用pandas,numpy,所以没有必要再使用其他语言开发web系统了。用python的 tornado 就可以了。




以上是关于面面观 | 使用python tornado web进行开发的主要内容,如果未能解决你的问题,请参考以下文章

Tornado Python 如何处理客户端连接丢失

tornado

Python tornado初探

面面观 | 使用python 连接数据库,插入并查询数据--link

python---session(tornado中使用)缓存

python web框架之Tornado的简单使用