Configuring Pyro

Pyro can be configured using several configuration items. The current configuration is accessible from the Pyro4.config object, it contains all config items as attributes. You can read them and update them to change Pyro’s configuration. (usually you need to do this at the start of your program). For instance, to enable message compression and change the server type, you add something like this to the start of your code:

Pyro4.config.COMPRESSION = True
Pyro4.config.SERVERTYPE = "multiplex"

You can also set them outside of your program, using environment variables from the shell. To avoid conflicts, the environment variables have a PYRO_ prefix. This means that if you want to change the same two settings as above, but by using environment variables, you would do something like:

$ export PYRO_COMPRESSION=true
$ export PYRO_SERVERTYPE=multiplex

(or on windows:)
C:\> set PYRO_COMPRESSION=true
C:\> set PYRO_SERVERTYPE=multiplex

Resetting the config to default values

Pyro4.config.reset([useenvironment=True])

Resets the configuration items to their builtin default values. If useenvironment is True, it will overwrite builtin config items with any values set by environment variables. If you don’t trust your environment, it may be a good idea to reset the config items to just the builtin defaults (ignoring any environment variables) by calling this method with useenvironment set to False. Do this before using any other part of the Pyro library.

Inspecting current config

To inspect the current configuration you have several options:

  1. Access individual config items: print(Pyro4.config.COMPRESSION)

  2. Dump the config in a console window: python -m Pyro4.configuration (or simply pyro4-check-config) This will print something like:

    Pyro version: 4.6
    Loaded from: E:\Projects\Pyro4\src\Pyro4
    Active configuration settings:
    AUTOPROXY = True
    COMMTIMEOUT = 0.0
    COMPRESSION = False
    ...
    
  3. Access the config as a dictionary: Pyro4.config.asDict()

  4. Access the config string dump (used in #2): Pyro4.config.dump()

Overview of Config Items

config item type default meaning
AUTOPROXY bool True Enable to make Pyro automatically replace Pyro objects by proxies in the method arguments and return values of remote method calls. Doesn’t work with marshal serializer.
COMMTIMEOUT float 0.0 network communication timeout in seconds. 0.0=no timeout (infinite wait)
COMPRESSION bool False Enable to make Pyro compress the data that travels over the network
DETAILED_TRACEBACK bool False Enable to get detailed exception tracebacks (including the value of local variables per stack frame)
DOTTEDNAMES bool False [deprecated] Server side only: Enable to support object traversal using dotted names (a.b.c.d)
HMAC_KEY bytes None Shared secret key to sign all communication messages
HOST str localhost Hostname where Pyro daemons will bind on
MAX_MESSAGE_SIZE int 0 Maximum size in bytes of the messages sent or received on the wire. If a message exceeds this size, a ProtocolError is raised.
NS_HOST str equal to HOST Hostname for the name server
NS_PORT int 9090 TCP port of the name server
NS_BCPORT int 9091 UDP port of the broadcast responder from the name server
NS_BCHOST str None Hostname for the broadcast responder of the name sever
NATHOST str None External hostname in case of NAT
NATPORT int None External port in case of NAT
BROADCAST_ADDRS str <broadcast>, 0.0.0.0 List of comma separated addresses that Pyro should send broadcasts to (for NS lookup)
ONEWAY_THREADED bool True Enable to make oneway calls be processed in their own separate thread
POLLTIMEOUT float 2.0 For the multiplexing server only: the timeout of the select or poll calls
SERVERTYPE str thread Select the Pyro server type. thread=thread pool based, multiplex=select/poll based
SOCK_REUSE bool False Should SO_REUSEADDR be used on sockets that Pyro creates.
PREFER_IP_VERSION int 4 The IP address type that is preferred (4=ipv4, 6=ipv6, 0=let OS decide).
THREADING2 bool False Use the threading2 module if available instead of Python’s standard threading module
THREADPOOL_SIZE int 16 For the thread pool server: amount of worker threads to be spawned.
FLAME_ENABLED bool False Should Pyro Flame be enabled on the server
SERIALIZER str serpent The wire protocol serializer to use for clients/proxies (one of: serpent, json, marshal, pickle)
SERIALIZERS_ACCEPTED set json,marshal, serpent The wire protocol serializers accepted in the server/daemon. Use comma separated string for initial config, will be a set after initialization.
PICKLE_PROTOCOL_VERSION int highest poss The pickle protocol version to use, if pickle is selected as serializer. Defaults to pickle.HIGHEST_PROTOCOL
LOGWIRE bool False If wire-level message data should be written to the logfile (you may want to disable COMPRESSION)
METADATA bool True Client: Get remote object metadata from server automatically on proxy connect (methods, attributes, oneways, etc) and use local checks in the proxy against it (set to False to use compatible behavior with Pyro 4.26 and earlier)
REQUIRE_EXPOSE bool False Server: Is @expose required to make members remotely accessible. If False, everything is accessible (this is the default for now).

There are two special config items that are only available as environment variable settings. This is because they are used at module import time (when the Pyro4 package is being imported). They control Pyro’s logging behavior:

environment variable type default meaning
PYRO_LOGLEVEL string not set The log level to use for Pyro’s logger (DEBUG, WARN, ...) See Python’s standard logging module for the allowed values. If it is not set, no logging is being configured.
PYRO_LOGFILE string pyro.log The name of the log file. Use {stderr} to make the log go to the standard error output.

Table Of Contents

Previous topic

Tips & Tricks

Next topic

Upgrading from Pyro 3