From 42b75b897add6ab295c18dfc4ce9937e4a212b3e Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Thu, 21 May 2009 01:44:33 +0000 Subject: - Removed the pickling of ZCML actions (the code that wrote ``configure.zcml.cache`` next to ``configure.zcml`` files in projects). The code which managed writing and reading of the cache file was a source of subtle bugs when users switched between imperative (e.g. ``@bfg_view``) registrations and declarative registrations (e.g. the ``view`` directive in ZCML) on the same project. On a moderately-sized project (535 ZCML actions and 15 ZCML files), executing actions read from the pickle was saving us only about 200ms (2.5 sec vs 2.7 sec average). On very small projects (1 ZCML file and 4 actions), startup time was comparable, and sometimes even slower when reading from the pickle, and both ways were so fast that it really just didn't matter anyway. --- docs/narr/project.rst | 13 ------------- docs/narr/startup.rst | 20 +++++++++----------- docs/narr/views.rst | 12 +++++------- 3 files changed, 14 insertions(+), 31 deletions(-) (limited to 'docs') diff --git a/docs/narr/project.rst b/docs/narr/project.rst index 5b15e9f44..2bd523aab 100644 --- a/docs/narr/project.rst +++ b/docs/narr/project.rst @@ -188,19 +188,6 @@ port 6543. development easier, as changes to Python code under :mod:`repoze.bfg` is not put into effect until the server restarts. -.. note:: When :mod:`repoze.bfg` starts, it attempts to write a - ``.cache`` file which stores a cached version of your - :term:`application registry`. In a typical setup this file will be - written as ``configure.zcml.cache`` in the same directory that your - application's ``configure.zcml`` is stored. This is temporary data - that can help your :mod:`repoze.bfg` application start slightly - faster (its existence prevents the need to parse the XML stored in - the ``.zcml`` file if that file or any of files upon which it - depends files have not changed). You can delete it at will as - necessary; it will be recreated. If a ``.cache`` file cannot be - written due to filesystem permissions, :mod:`repoze.bfg` will just - reparse the ``.zcml`` file every time it starts. - Viewing the Application ----------------------- diff --git a/docs/narr/startup.rst b/docs/narr/startup.rst index 58476da79..1d8206f14 100644 --- a/docs/narr/startup.rst +++ b/docs/narr/startup.rst @@ -127,17 +127,15 @@ press ``return`` after running ``paster serve MyProject.ini``. absolute, the ``package`` argument is ignored. #. The ``make_app`` function does its work. It finds and parses the - ZCML represented by the application registry file (or may obtain - the application registry from a previously cached pickle file, - e.g. ``configure.zcml.cache``). If it fails to parse one or more - ZCML files, a ``XMLConfigurationError`` is raised (or possibly - another error if the ZCML file just doesn't exist). If it - succeeds, an :term:`application registry` is created, representing - the view registrations (and other registrations) for your - application. A :term:`router` instance is created, and the router - is associated with the application registry. The router represents - your application; the settings in the application registry that is - created will be used for your application. + ZCML represented by the application registry file. If it fails to + parse one or more ZCML files, a ``XMLConfigurationError`` is raised + (or possibly another error if the ZCML file just doesn't exist). + If it succeeds, an :term:`application registry` is created, + representing the view registrations (and other registrations) for + your application. A :term:`router` instance is created, and the + router is associated with the application registry. The router + represents your application; the settings in the application + registry that is created will be used for your application. #. A ``WSGIApplicationCreatedEvent`` event is emitted (see :ref:`events_chapter` for more informations about events). diff --git a/docs/narr/views.rst b/docs/narr/views.rst index 87f191a3e..ecaa9784b 100644 --- a/docs/narr/views.rst +++ b/docs/narr/views.rst @@ -186,13 +186,11 @@ After you do so, you will not need to use any other ZCML to configure decorator to do this work. .. warning:: using this feature tends to slows down application - startup, as the application registry is not capable of being cached - within a ``configure.zcml.cache`` file when this package is in use, - and more work is performed at application startup to scan for view - declarations. Also, if you use decorators, it means that other - people will not be able to override your view declarations - externally using ZCML: this is a common requirement if you're - developing an exensible application (e.g. a framework). + startup slightly, as more work is performed at application startup + to scan for view declarations. Also, if you use decorators, it + means that other people will not be able to override your view + declarations externally using ZCML: this is a common requirement if + you're developing an exensible application (e.g. a framework). The ``bfg_view`` Decorator ~~~~~~~~~~~~~~~~~~~~~~~~~~ -- cgit v1.2.3