我正在 web.py (重写/扩展mongs)中编写一个网络应用程序,我希望它既可以用作独立应用程序,也可以用作可以将请求转发到的子应用程序。我遇到的问题是,当它用作子应用程序时,不能轻易地从它自己的静态目录中提供静态文件。由于我打算分发它(并且不要求用户将文件组合到他们项目的静态目录中),我希望目录结构为:
app_that_is_using_mongs (not mine)
static (which holds the app's static files - also not mine)
mongs (my subapp)
main.py (the code for mongs)
view (holds templates)
static (the static folder for mongs)
main.py (the code for the app that is using mongs)
...以便整个 mongs 目录与使用它的任何应用程序分开。
我考虑了一些使它起作用的可能性:
使用从静态目录读取和输出文件的请求处理程序,例如:
cwd = os.path.dirname(__file__) + '/' # get current working directory class Static: def GET(self, filename): """searches for and returns a requested static file or 404s out""" try: return open(cwd + 'static/' + filename, 'r').read() except: web.application.notfound(app) # file not found
我不确定这个解决方案对于大文件的性能,看起来这应该是 web.py 可以自己做的事情。
通过 web.py 访问cherry.py staticdir 工具添加另一个静态目录...我不知道如何做这样的事情(直接与运行 web.py 的服务器交互),我不知道认为如果我切换到 Gunicorn 服务器(或除了cherry.py 之外的任何服务器)它仍然可以工作。
修复 web.py 处理静态文件的方式以使其更具可扩展性......如果没有其他方法,那么重写 web.py 的这一部分并将其推送到主 repo 可能是最好的方法。
那么,最好的方法是什么?