Python BattlePy应用程序和CherryPy服务器未记录访问权限

Python BattlePy应用程序和CherryPy服务器未记录访问权限,python,cherrypy,bottle,Python,Cherrypy,Bottle,我正在用CherryPy提供一个瓶装应用程序,如下所示: import cherrypy 从myapp导入myapp 从bicker.middleware导入SessionMiddleware appdir='/path/to/app' app=MyApp(appdir) 会话_选项={ “会话超时”:600,#10分钟 'session.type':'file', “session.auto”:True, “session.data_dir”:appdir+”/auth/data” } app

我正在用CherryPy提供一个瓶装应用程序,如下所示:

import cherrypy
从myapp导入myapp
从bicker.middleware导入SessionMiddleware
appdir='/path/to/app'
app=MyApp(appdir)
会话_选项={
“会话超时”:600,#10分钟
'session.type':'file',
“session.auto”:True,
“session.data_dir”:appdir+”/auth/data”
}
app=SessionMiddleware(app,session_opts)
cherrypy.tree.graft(应用程序“/”)
cherrypy.config.update({
“log.screen”:False,
'log.access_file':appdir+'/front_end/cherrypy.access.log',
'log.error_file':appdir+'/front_end/cherrypy.error.log',
'server.socket_port':8080,
'server.socket_host':'0.0.0.0'
})
cherrypy.engine.start()
cherrypy.engine.block()
一切似乎都正常工作,但
cherrypy.access.log
仍为空,而
cherrypy.error.log
的内容如下:

[30/Dec/2014:11:04:55] ENGINE Bus STARTING
[30/Dec/2014:11:04:55] ENGINE Started monitor thread '_TimeoutMonitor'.
[30/Dec/2014:11:04:55] ENGINE Started monitor thread 'Autoreloader'.
[30/Dec/2014:11:04:56] ENGINE Serving on http://0.0.0.0:8080
[30/Dec/2014:11:04:56] ENGINE Bus STARTED
但除此之外,没有访问日志,即使在提供内容之后

我也试过了

从cherrypy导入wsgiserver
#而不是cherrypy.*呼叫
server=wsgiserver.CherryPyWSGIServer(('0.0.0',8080),app)
server.start()

但它将打印与上面相同的内容,但没有访问日志。找不到有关日志记录和BottlePy集成的任何其他文档。

您需要将
log.screen
设置为
True
,以启用错误日志和访问日志


请参阅(旧)文档:

您运行的应用程序不是本地CherryPy one,而且
graft
ing基本上绕过了CP的大部分内部,很可能包括访问日志记录


由于除了基本的WSGI发布之外,您不使用CherryPy的任何功能,因此最好使用更面向服务的解决方案,如uWSGI、Gunicorn或nginx/Apache+插件。

运行您的应用程序的用户有权写入文件吗?是的,权限可以。访问日志被创建,错误日志有一些行。这对日志文件没有影响。据我所知,
log.screen
用于记录到标准输出,而不是日志文件。这不是我对文档的理解……你试过它看看会发生什么吗?我试过CherryPy,因为它是在BottlePy文档中建议的。也许不是最好的选择。瓶子应用的高性能线程部署的最佳选择是什么?@jpcgt我给了你一些流行的选择,选择最适合你的。请注意,由于Python有其GIL问题,所以在需要性能时应该避免使用本机线程服务器。uWSGI和Gunicorn使用基于流程的工人,在这方面是安全的;不过,我对插件还不确定。