采用Tornado作为Web Server 运行第三方Web框架

  部门内部的所有Web应用,restful服务等都是采用Python开发的,主要用到了bottle框架和django框架。

    这两个框架都是采用的自身的Web Server运行的,在高负载的情况下响应比较慢。改为Tornado作为Web Server来承载应用。

1. Bottle应用

frombottle importrun

importargparse
if__name__=="__main__":
    parser=argparse.ArgumentParser()
    parser.add_argument("-H","--host",help="Host to bind the API server on", default="localhost", action="store", required=False)
    parser.add_argument("-p","--port",help="Port to bind the API server on", default=8090, action="store", required=False)
    args=parser.parse_args()
 
    run(server="tornado",host=args.host, port=args.port)


2. Django应用

#!/usr/bin/env python
 
fromtornado.options importoptions, define, parse_command_line
importdjango.core.handlers.wsgi
importtornado.httpserver
importtornado.ioloop
importtornado.web
importtornado.wsgi
importos
importsys
define('port',type=int, default=8000)
 
defmain():
    os.environ.setdefault("DJANGO_SETTINGS_MODULE","web.settings")
    parse_command_line()
    wsgi_app=tornado.wsgi.WSGIContainer(django.core.handlers.wsgi.WSGIHandler())
    tornado_app=tornado.web.Application([
      (r'/static/(.*)', tornado.web.StaticFileHandler, {'path': os.path.join(os.path.join(os.getcwd()),"static")}),
      ('.*', tornado.web.FallbackHandler, dict(fallback=wsgi_app)),
    ])
    server=tornado.httpserver.HTTPServer(tornado_app)
    server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()
 
if__name__ =='__main__':
    main()

Django应用较为复杂,主要有几个点需要注意

os.environ.setdefault("DJANGO_SETTINGS_MODULE","web.settings")

Django的配置,不可缺少

(r'/static/(.*)', tornado.web.StaticFileHandler, {'path': os.path.join(os.path.join(os.getcwd()),"static")}),

用于配置静态文件的路由,不可缺少,同时必须将该route放在
('.*', tornado.web.FallbackHandler, dict(fallback=wsgi_app)),
前面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值