学习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
'sclose()
方法中清理每个请求的状态;当服务器决定完成整个应用程序时,清理任何共享状态、关闭数据库连接等的正确方法是什么?WSGI 规范似乎没有提供任何等同于每个请求的保证close()
——我错过了什么吗?或者有什么理由说明这是一种从根本上被误导的方法?