Werkzeug v0.11 我试着Werkzeug的源代码,文件wsgi.py中的类ClosingIterator,由函数implements_iterator解决:
wsgi.py
@implements_iterator
class ClosingIterator(object):
"""The WSGI specification requires that all middlewares and gateways
respect the `close` callback of an iterator. Because it is useful to add
another close action to a returned iterator and adding a custom iterator
is a boring task this class can be used for that::
return ClosingIterator(app(environ, start_response), [cleanup_session,
cleanup_locals])
If there is just one close function it can be passed instead of the list.
A closing iterator is not needed if the application uses response objects
and finishes the processing if the response is started::
try:
return response(environ, start_response)
finally:
cleanup_session()
cleanup_locals()
"""
我在文件_compat.py中找到implements_iterator的定义:
implements_iterator = _identity
_identity = lambda x: x
问题是: implements_iterator的功能是什么?