Skip to main content

Easy GDBus service creation with exit-on-idle functionality

Project description

Python GDBus Util

A collection of utilities to create GDBus services in Python.

DBusObject

This is a class that can be used to define a D-Bus object and register it on a D-Bus service.

Take a look at examples/simple/hello-service.py for a simple example of how to use it.

ExitOnIdleService

This class implements race-free exit-on-idle for a D-Bus service. It is useful for services that are meant to be started on demand and exit automatically when they are no longer needed.

It takes a timeout in seconds as a parameter and will exit the service if it is idle at the end of the timeout. A check_idle method can be overridden to implement the idle check. The DBusObject has a check_idle method which checks if there are any ongoing method calls. If the ExitOnIdleService instance is also a DBusObject, it will use that method as the idle check by default.

The timer can be reset by calling the reset_idle_timer method. If the ExitOnIdleService instance is also a DBusObject, it will automatically reset the idle timeout whenever a method call is received (or a property is read or written).

To avoid that requests are lost when the service is exiting, it unregisters the bus name first and then handles any pending requests before exiting.

If the service is run as a systemd service, systemd will be notified that the service is stopping, so that it will queue any start requests instead of assuming that the service is still running.

Take a look at examples/exit-on-idle/hello-service.py for a simple example or examples/more-complex/accounts-service.py for a more complex example of how to implement an exit-on-idle service.

Credits

The race-free exit-on-idle implementation was inspired by https://github.com/cgwalters/test-exit-on-idle and systemd's bus_event_loop_with_idle.

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

gdbus_util-0.0.2.tar.gz (28.9 kB view details)

Uploaded Source

Built Distribution

gdbus_util-0.0.2-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

Details for the file gdbus_util-0.0.2.tar.gz.

File metadata

  • Download URL: gdbus_util-0.0.2.tar.gz
  • Upload date:
  • Size: 28.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for gdbus_util-0.0.2.tar.gz
Algorithm Hash digest
SHA256 6109094baeeb3d82ec4795213cb33448c4ecb16a6fb3396a291aed044382942a
MD5 f44edc1fe5fe218a2a9a12988ca8b48c
BLAKE2b-256 bfb794407b77e48d04cc2890f2ac0e3e748a612352e4ba76e9f697daae9bde47

See more details on using hashes here.

File details

Details for the file gdbus_util-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: gdbus_util-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 23.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for gdbus_util-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3443a00a60448f17159a4ea1acab022e8a100c626df4147845bd6a0306514135
MD5 3d731b8207186f7b8115092d0413127f
BLAKE2b-256 9a77905289fd78907922d92feea7d074c97b2651410eaecc182afa73b300f201

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