Goot idea! At the end I did it like that, but a little other way. There is a *request.add_finished_callback* property of the request object, so I extended the DAL object:
class Root(DAL): def __init__(self, request, uri): DAL.__init__(self, uri, pool_size=0) request.add_finished_callback(self._close) def _close(self, request): self._adapter.close()