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.17.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: narration-0.2.17.tar.gz
  • Upload date:
  • Size: 29.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for narration-0.2.17.tar.gz
Algorithm Hash digest
SHA256 9f892d0815093d25631665d676d908d5a243de36cb5633ae1824626a3bb21c38
MD5 c5c2ba984166d6968c7069260b4c2fb1
BLAKE2b-256 37353dc4758abd5e0096c1807cc674015d4a8b59175ef1739f42e4c0c57390f8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for narration-0.2.17-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3b034d76b8b740f30e1212e19c241b3cd154e772342a61c76244455d0d4a504e
MD5 c1dead8bb27b457d0e7a49778f18248c
BLAKE2b-256 90d735a407cdebe8fdda67035b0dda7732619d25640a524f3223fa688c354735

See more details on using hashes here.

Supported by

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