Я хочу использовать mongodb или redis для ведения журналов для пользователей в пирамиде/пилонах, но не могу найти документ для создания миддлайнов. Как мне это сделать?Как написать промежуточное ПО для пирамиды/пилонов 2?
ответ
Standart промежуточного
class LoggerMiddleware(object):
'''WSGI middleware'''
def __init__(self, application):
self.app = application
def __call__(self, environ, start_response):
# write logs
try:
return self.app(environ, start_response)
except Exception, e:
# write logs
pass
finally:
# write logs
pass
В пирамиде создания кода приложения:
from paste.httpserver import serve
from pyramid.response import Response
from pyramid.view import view_config
@view_config()
def hello(request):
return Response('Hello')
if __name__ == '__main__':
from pyramid.config import Configurator
config = Configurator()
config.scan()
app = config.make_wsgi_app()
# Put middleware
app = LoggerMiddleware(app)
serve(app, host='0.0.0.0')
Не можете найти документы совершенно странно, так как документация Python модуля регистрации довольно многословен и полное:
http://docs.python.org/library/logging.html#handler-objects
Вы должны реализовать свой собственный MongoDBHandler и прикрепить метод Испустите() с MongoDB через pymongo.
Я., я не слишком беспокоиться о лесозаготовительной части, но при попытке Figur Eout, где поставить в пирамиде – Timmy
Другой вариант в этом случае было бы не использовать промежуточное программное обеспечение на всех и просто использовать событие BeforeRequest в пирамиде.
from pyramid.events import NewRequest
import logging
def mylogger(event):
request = event.request
logging.info('request occurred')
config.add_subscriber(mylogger, NewRequest)
Могу ли я установить это произойдет после того, как ответ, поэтому он получает данные пользователю как можно скорее? – Timmy