Skip to main content

zc.zkzopeserver provides a wrapper for the zope.server WSGI runner that registers with ZooKeeper. By registering with ZooKeeper, you can let the operating system assign ports and have clients find your server by looking in ZooKeeper.

Basic Usage

The wrapper is used in a past-deploy configuration file:

[server:main]
use = egg:zc.zkzopeserver
zookeeper = zookeeper.example.com:2181
path = /fooservice/providers

The wrapper supports the following options:

zookeeper

required ZooKeeper connection string

path

required path at which to register your server

Your server is registered by adding a ZooKeeper ephemeral node as a child of the path with the server address as the name.

host

host name or ip to listen on, defaulting to ‘’

port

The port to listen on, defaulting to 0

session_timeout

A ZooKeeper session timeout in milliseconds

threads

The size of the thread pool, defaulting to 1

monitor_server

A zc.monitor server address.

The value is an address of the form HOST:PORT. See Monitor server below. (Host can be empty to listen on all interfaces.)

loggers

Logging configuration.

This can be one of:

  • A logging level name (CRITICAL, ERROR, WARNING, INFO, or DEBUG), or

  • A ZConfig loggers-definition string.

    If the configuration includes format strings, you’ll need to use double dollar signs rather than %, as in:

    format $$(message)s

    This is necessary due to the use of string formats in the Paste Deployment configuration syntax.

Monitor server

The zc.monitor package provides a simple extensible command server for gathering monitoring data or providing run-time control of servers. If zc.monitor is in the Python path, zc.zkzopeserver can start a monitor server and make it’s address available as the monitor property of a server’s ephemeral port. To see how this works, let’s update the earler example:

[server:main]
use = egg:zc.zkzopeserver
zookeeper = zookeeper.example.com:2181
path = /fooservice/providers
monitor_server = 127.0.0.1:0

When our web server is running, the /fooservice/providers node would look something like:

/providers
  /1.2.3.4:61181
    monitor = u'127.0.0.1:61182'
    pid = 4525

Some notes on the monitor server:

  • A monitor server won’t be useful unless you’ve registered some command plugins.

  • zc.monitor isn’t a dependency of zc.zkzopeserver and won’t be in the Python path unless you install it.

zc.zservertracslog integration

The package zc.zservertracelog extends zope.server to provide support for “trace” logs that have multiple log entries per web request as a request goes through various stages.

If you want to use zc.zservertraeslog with zc.zkzopeserver, make sure zc.zservertracelog is in your Python path and include the zservertracelog option in your server section:

[server:main]
use = egg:zc.zkzopeserver
zookeeper = zookeeper.example.com:2181
path = /fooservice/providers
monitor_server = 127.0.0.1:0
zservertracelog = true

Change History

0.3.0 (2012-02-02)

  • Added logging-configuration support.

  • Fixed: servers were registered with the host information returned by socket.getsockname(), which was unhelpful.

  • Fixed: Killing a server (with SIGTERM) didn’t shut down the ZooKeeper connection cleanly, causing a delay in removing registered ephemeral nodes.

0.2.0 (2012-01-18)

Added optional support for using zc.zservertracelog to generate trace logs.

0.1.0 (2011-12-11)

Initial release

Release files for zc.zkzopeserver 1.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zc.zkzopeserver 1.3.2
File Size Uploaded
zc.zkzopeserver-1.3.2.tar.gz 8.0 kB Details

Release files / zc.zkzopeserver-1.3.2.tar.gz

Download URL zc.zkzopeserver-1.3.2.tar.gz
Size 8.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4ffa3c3cd58a5af75b82ccfe76cd51cd6d58bae8336ed7f35050a5c93003ab71
BLAKE2b-256 checksum
How to use checksums
928f2ed93ed87da087d0df2bc857d410f5df1fc2c5a35b817a507fce31b56451
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.3.2 This release

1 release file

1.3.1

1 release file

0.3.2

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page