学习WSGI;我正在尝试创建一个WSGI应用程序:
所以,
class RequestHandler:
def __init__(self, app, environ, start_response, cursor):
self.start_response = start_response
self.cursor = cursor
def __iter__(self):
self.start_response('200 OK', [('Content-type','text/plain')])
yield do_stuff_with(self.cursor)
def close(self):
self.cursor.close()
class Application:
def __init__(self):
self.connection = psycopg2.connect(database="site", user="www-data")
self.connection.set_isolation_level(0)
def __call__(self, environ, start_response):
return RequestHandler( self, environ, start_response, self.connection.cursor() )
因此,我能够在RequestHandler
的{{1}}方法中清理每请求状态;什么是清理任何共享状态的正确方法,关闭数据库连接等,当服务器决定它完成整个应用程序? WSGI规范似乎没有提供与每个请求close()
相当的任何保证 - 我错过了什么?或者,为什么这是一种根本误导的方法?
答案 0 :(得分:1)
您可以使用__del__
方法:
def __del__(self):
return self.close()