Skip to main content

Narration is a logging library starting a server receiving log records from other process.

Project description

https://img.shields.io/pypi/v/narration.svg https://img.shields.io/pypi/pyversions/narration.svg https://img.shields.io/pypi/status/narration.svg https://img.shields.io/pypi/l/narration.svg

narration

Logging is easy, but setup is messy and boring in multi processes contexts, due to the various way python can spawn processes (fork, spawn, forkserver) via explicit or implicit spawning context.

Narration handles the following logging setup boiler plate:

  • main process’s logger writes log record emitted by the process itself or its child processes

  • child process’s logger’s handler forward log records to the main process only

Installation

Install python virtual envs needed by tox/IDE

bash make.sh --setup-python-dev-envs
bash make.sh --install-dependencies
bash make.sh --install-tests-dependencies

Usage

  • Create your loggers as you like (eg: logging.basicConfig(…))

  • On the master process, setup the logger to act as server:

import narration
import multiprocessing
import logging

ctx = mutiprocessing.get_context()
m = ctx.Manager()

logger=logging.getLogger()
client_handler_settings = narration.setup_server_handlers(logger=logger, ctx=ctx, ctx_manager=m)
logger.debug("Main process ready")

pool = multiprocessing.pool.Pool(10, child_process_worker_function, [client_handler_settings] , 2, ctx)
  • On the child process, setup the logger to act as ‘emitting’ client:

import narration
import multiprocessing
import logging

# Child process must receive the 'client_handler_settings' payload when starting the process

# Re-create a logger, replacing handlers/formatting (if any) with handler to forrward records to the master process
logger=logging.getLogger()
narration.setup_client_handlers(logger=logger, handler_name_to_client_handler_settings=client_handler_settings)
logger.debug("Child process ready")
  • Child process log records will be sent to the master process’s logger’s original handlers for procesing.

Main process ready
Child process ready

Project details


Download files

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

Source Distribution

narration-0.2.21.tar.gz (30.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

narration-0.2.21-py2.py3-none-any.whl (44.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file narration-0.2.21.tar.gz.

File metadata

  • Download URL: narration-0.2.21.tar.gz
  • Upload date:
  • Size: 30.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for narration-0.2.21.tar.gz
Algorithm Hash digest
SHA256 cfebff6157ddf1a405ec6f988143feb2541ff95049a991c22058f58611d37019
MD5 84e6b381c14ea40aa985bf730f2c76ad
BLAKE2b-256 2a0bbe097621d39921771c8f72816fb8ce70a3d36c6b33db74915805ce120d52

See more details on using hashes here.

File details

Details for the file narration-0.2.21-py2.py3-none-any.whl.

File metadata

  • Download URL: narration-0.2.21-py2.py3-none-any.whl
  • Upload date:
  • Size: 44.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for narration-0.2.21-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 cdff247d5f34556a6c70db886baa9c37473865d4971d4390b66808839394ae0f
MD5 a9b8a0a60a1b1cd36cd276017a79f73c
BLAKE2b-256 e95ef2df8e1cf5ae56c0ef3ba3536a6176f6109dd0691905aca5c4923742973f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page