装饰器 "implements_iterator" 的作用是什么?
What is the function of the decorator "implements_iterator" ?
Werkzeug v0.11
我研究了 Werkzeug 的源代码,文件 wsgi.py 中的 class 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 的功能是什么?
Werkzeug v0.11 我研究了 Werkzeug 的源代码,文件 wsgi.py 中的 class 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 的功能是什么?