Howto pythonic way to integrate pynba and Flask?
后
pip安装烧瓶
pip安装pynba
我尝试下面的代码
1 2 3 4 5 6 7 8 9 | import flask import pynba.wsgi class FlaskWithPynba(flask.Flask): @pynba.wsgi.monitor(('localhost', 30002)) def wsgi_app(self, environ, start_response): super(FlaskWithPynba, self).wsgi_app(environ, start_response) app = FlaskWithPynba('myapp') |
但是在调用app.run()时会出现一些错误
1 2 3 4 5 6 7 8 9 | Traceback (most recent call last): File"/home/coffee/venv/local/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__ return self.wsgi_app(environ, start_response) File"pynba/wsgi/middleware.pyx", line 63, in pynba.wsgi.middleware.PynbaMiddleware.__call__ (pynba/wsgi/middleware.c:1554) File"pynba/wsgi/middleware.pyx", line 64, in pynba.wsgi.middleware.PynbaMiddleware.__call__ (pynba/wsgi/middleware.c:1510) TypeError: wsgi_app() takes exactly 3 arguments (2 given) |
看起来像pynba decorator只能用于普通函数而不是类的方法。
您需要执行以下操作:
1 2 3 4 5 | myapp = Flask() @pynba.wsgi.monitor(('localhost', 30002)) def app(environ, start_response): return myapp(environ, start_response) |
编写可以对类的函数和方法起作用的单个装饰器实现是非常重要的。他们或许应该查看
FWIW。如果他们的中间件包装器是:
- https://github.com/johnnoone/pynba/blob/master/pynba/wsgi/middleware.py#L39
那么它无论如何也不能正常工作。当WSGI应用程序是一个生成器时,所有时间都是Python用来创建生成器对象的时间。它不会花费WSGI应用程序代码运行多长时间。即使在WSGI应用程序的正常功能上,它也不会花费WSGI服务器发送响应所需的时间,然后调用返回的任何可迭代的