PaaS提供商会解决构建和运行HTTP服务中的出现的各种烦心事 。不需要再关心服务器 , 或者是提供IP地址之类的事情 。
PaaS会根据客户规模提供负载均衡器 。只需要给PaaS提供商提供配置文件即可完成各种复杂的步骤 。
现阶段比较常用的有Heroku和Docker 。
大多数PaaS提供商不支持静态内容 , 除非我们在Python应用程序中实现了对静态内容的更多支持或者向容器中加入了Apache或ngnix 。尽管我们可以将静态资源和动态页面的路径放在两个完全不同的URL空间内 , 但是许多架构师还是倾向于将两者放在同一个名字空间内 。
5、不使用Web框架编写WSGI可调用对象
下面第一段代码是用于返回当前时间的原始WSGI可调用对象 。
#!/usr/bin/env python3 # A simple HTTP service built directly against the low-level WSGI spec.import timedef app(environ, start_response):host = environ.get('HTTP_HOST', '127.0.0.1')path = environ.get('PATH_INFO', '/')if ':' in host:host, port = host.split(':', 1)if '?' in path:path, query = path.split('?', 1)headers = [('Content-Type', 'text/plain; charset=utf-8')]if environ['REQUEST_METHOD'] != 'GET':start_response('501 Not Implemented', headers)yield b'501 Not Implemented'elif host != '127.0.0.1' or path != '/':start_response('404 Not Found', headers)yield b'404 Not Found'else:start_response('200 OK', headers)yield time.ctime().encode('ascii') 第一段比较冗长 。下面使用第三方库简化原始WGSI的模式方法 。
第一个示例是使用WebOb编写的可调用对象返回当前时间 。
#!/usr/bin/env python3 # A WSGI callable built using webob.import time, webobdef app(environ, start_response):request = webob.Request(environ)if environ['REQUEST_METHOD'] != 'GET':response = webob.Response('501 Not Implemented', status=501)elif request.domain != '127.0.0.1' or request.path != '/':response = webob.Response('404 Not Found', status=404)else:response = webob.Response(time.ctime())return response(environ, start_response) 第二个是使用Werkzeug编写的WSGI可调用对象返回当前时间 。
#!/usr/bin/env python3 # A WSGI callable built using Werkzeug.import time from werkzeug.wrappers import Request, Response@Request.application def app(request):host = request.hostif ':' in host:host, port = host.split(':', 1)if request.method != 'GET':return Response('501 Not Implemented', status=501)elif host != '127.0.0.1' or request.path != '/':return Response('404 Not Found', status=404)else:return Response(time.ctime()) 大家可以对比这两个库在简化操作时的不同之处 , Werkzeug是Flask框架的基础 。
推荐阅读
- 一文让你搞懂令人脑瓜疼的python编码问题
- Docker 管理员操作使用说明
- Python Web静态服务器-epoll
- 三伏贴怎么使用 三伏贴没贴完怎么办
- 海淀首个自动驾驶汽车专用停车场6月底投入使用
- 密码学家:许多iOS加密措施“未被使用”
- 淘宝网广告法规定店铺不能在页面中使用哪些违规用语 店铺或商品违反淘宝禁售商品管理规范
- 老年人使用微信付款,开启这3个小开关,资金会更安全
- 冬瓜|敏感痘肌用什么护肤品 适合敏感肌使用的护肤品十大推荐
- Python Django框架