wsc*_*ang 2 python cherrypy flask
第一次使用Web框架,希望得到正确方法的建议.
我的目标是拥有一个可以根据传入的URL返回静态文件的服务器.我使用Flask作为我的Web框架,我打算使用CherryPy作为我的Web服务器.网络描述了使用CherryPy设置Flask的许多方法,我不确定我是否正确地进行了操作.
我一直在使用的资源:
我的Flask应用程序的简化版本test.py:
from flask import Flask
from flask import request
from flask import send_from_directory
import os
FOLDER='contents'
ROOT=os.path.abspath(os.path.join('.', FOLDER))
@app.route("/get")
def route_3():
return flask.send_from_directory(os.path.join(ROOT, 'p01', 'p02'), 'file12.zip', as_attachment=True)
if __name__ == "__main__":
app.config.update(DEBUG=True)
app.run()
Run Code Online (Sandbox Code Playgroud)
我运行CherryPy的脚本:
import os
import cherrypy
from test import app
from cherrypy import wsgiserver
def option_1():
cherrypy.tree.graft(app, '/')
# If I comment this out, the server works
#cherrypy.tree.mount(None, '/', config={
# '/': {
# 'tools.staticdir.on': True,
# 'tools.staticdir.dir': app.static_folder
# },
# })
cherrypy.config.update({'server.socket_port': 5000})
cherrypy.engine.start()
cherrypy.engine.block()
def option2():
d = wsgiserver.WSGIPathInfoDispatcher({'/': app})
server = wsgiserver.CherryPyWSGIServer(('127.0.0.1', 5000), d)
try:
server.start()
except KeyboardInterrupt:
server.stop()
if __name__ == '__main__':
#option_1()
option_2()
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
option_1
实际上使用整个CherryPy Web框架(他们的文档称为APPLICATION层)来安装您的WSGI应用程序 - 插件,工具等可以充分利用.要使用CherryPy提供静态文件,您可能希望将注释掉的代码更改为:
cherrypy.tree.mount(None, '/static', config={
'/': {
'tools.staticdir.on': True,
'tools.staticdir.dir': app.static_folder
},
})
Run Code Online (Sandbox Code Playgroud)
option_2
另一方面,只是利用CherryPy的WSGI服务器实现(CORE层)来为Flask应用程序提供服务 - 它不使用任何类似于CherryPy的框架方面.如果你也可以通过Flask的路由层提供静态文件,你甚至可以删除WSGIPathInfoDispatcher
中间件并直接安装app
在CherryPyWSGIServer
.如果您希望CherryPy管理/static
路由服务,那么您将需要cherrypy.tools.staticdir.handler
在/static
路由下安装实例,如下所示:
static_handler = tools.staticdir.handler(section='/', dir=app.static_folder)
d = wsgiserver.WSGIPathInfoDispatcher({'/': app, '/static': static_handler})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2480 次 |
最近记录: |