Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

Load balancer health checker for a Plone/Zope Instance

Project description


Provides a mechanism to front-end load balancers to check whether a Zope
instance with one or more Plone sites installed is suitable for sending
requests to.

Suitability for a load balancer in this case is
- Are the Plone sites and their sub-resources pre-cached into memory? and
- Do the Plone sites and their sub-resources return valid HTTP status codes?

The health check works in this way:
- http://my.zope.instance/@@healthcheck is called
- If the health check has already run successfully 200 OK is returned
- The health checker traverses the ZODB looking for Plone insistences
- For each instance the front page is sub-requested (by making a sub-requests,
this forces the relevant Zope objects in the cache)
- The front page is inspected for second level pages and resources associated
with the page like images and css.
- Those resources are sub-requested to bring them into the cache
- CSS is inspected for resources and those resources and also sub-requested
- If successful a status code of 200 OK is returned otherwise 503 Service
Unavailable is returned

The health check will fail if
- The Plone front-page returns a 4xx client error or a 5xx server error. Except
for 401 Unauthorised access (unauthorised access is valid because a
restricted Plone site is a valid situation.)
- If a sub-resource returns a 5xx (server) error.

- http://my.zope.instance/@@healthcheck?verbose=yes gives more output to the
instance logs
- http://my.zope.instance/@@healthcheck?ignoreResourceServerError=yes ignores
5xx server errors on sub-requests to resources discovered on the front page
or CSS


1.0 (2011-06-24)

- Removed force=yes option to prevent DoS attacks
- Output now to instance stderr

0.1dev (unreleased)

- Plone instance discovery / ZODB traveersal
- Resource sub-requesting
- Page xml interigation and sub-requesting
- CSS interigation and sub-requesting
- Second level page sub-requesting
- Added verbose=yes for better output control
- Added force=yes to force a re-check
- Added ignoreResourceServerError=yes option to ignore 5xx errors returned by

Project details

Release history Release notifications

This version
History Node


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date (10.5 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page