...
Code Block |
---|
def process_handler(): ... # Only return request if md is valid? valid = True log.debug(f"Resource walk") for child in request.registry.md.rm.walk(): log.debug(f"Resource {child.url}") valid = valid and child.is_valid() if len(request.registry.md.rm) == 0 or not valid: log.debug(f"Resource not valid") # 500: The server has either erred or is incapable of performing the requested operation. raise exc.exception_response(500) else: log.debug(f"Resource valid") return response |
Performance-test branch
Incorporated the "store.py" changes in this branch https://github.com/IdentityPython/pyFF/compare/preformance-tests to see how that would change the memory consumption of pyFF, but it didn't change much. It ends up using ~1.8G of RES after several hours of continuously (60s) refreshing the edugain metadata feed.
The changes try to store entities as their serialized (tostring) version of the metadata, and re-parse it on demand. The idea being that we don't need to keep track of the whole parsed tree, but just the serialized entities.