2014-12-30 2 views
2

Я отбывал BottlePy App с CherryPy как это:сервер BottlePy App и CherryPy не вход доступа

import cherrypy 
from myapp import MyApp 
from beaker.middleware import SessionMiddleware 

appdir = '/path/to/app' 
app = MyApp(appdir) 

session_opts = { 
    'session.timeout': 600, # 10 minutes 
    'session.type': 'file', 
    'session.auto': True, 
    'session.data_dir': appdir + '/auth/data' 
} 
app = SessionMiddleware(app, session_opts) 

cherrypy.tree.graft(app, '/') 
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 

Но ничего больше, нет журналов доступа, даже после обслуживания контента.

Я также попытался

from cherrypy import wsgiserver 

# Instead of the cherrypy.* calls 

server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 8080), app) 
server.start() 

, но он будет печатать то же самое, что и выше, но не журналы доступа. Не удалось найти дополнительную документацию по протоколированию и интеграции с BottlePy.

+0

имеет ли пользователь, запускающий ваше приложение, права на запись в файл? –

+0

Да, разрешения в порядке. Создается журнал доступа, и в журнале ошибок есть несколько строк. – jpcgt

ответ

0

Чтобы включить журналы ошибок и доступа, вам необходимо установить log.screen в True.

Смотреть (старые) документы: https://cherrypy.readthedocs.org/en/3.3.0/refman/_cplogging.html

+0

Это не влияет на файлы журнала. И насколько я понимаю, «log.screen» предназначен для входа в стандартный вывод, а не в файлы журнала. – jpcgt

+0

Это не мое понимание документов ... вы попробовали это, чтобы посмотреть, что произойдет? –

+0

Да, попробовал. – jpcgt

2

Приложение вы работаете не является родным CherryPy один, и graft ING в основном обходит большинство внутренних ПРС, скорее всего, в том числе регистрации доступа.

Поскольку вы не используете какие-либо функции CherryPy помимо основной публикации WSGI, вам может быть лучше использовать один из более ориентированных на обслуживание (и более свежих) решений, таких как uWSGI, Gunicorn или nginx/Apache +.

+0

Я пытался использовать CherryPy, потому что это предлагается в документах BottlePy. Возможно, это не лучший выбор. Что было бы лучшим выбором для высокопроизводительного поточного развертывания приложения для бутылок? – jpcgt

+0

@jpcgt Я дал вам несколько популярных вариантов, выберите, который подходит вам лучше всего. Обратите внимание: поскольку у Python есть проблема с GIL, вы должны избегать встроенных поточных серверов, когда вам нужна производительность. uWSGI и Gunicorn используют работников, основанных на процессах, и являются безопасными в этом отношении; но не уверен в плагинах. – jwalker

Смежные вопросы