Skip to main content

lightsleep

Lightsleep is sleep() you can interrupt with redis or websocket event or touch/write file.

This is nice feature if you want to do some actions periodically AND immediately on some event.

Install

Install from pypi:

pip3 install lightsleep

... or install from git:

pip3 install git+https://github.com/yaroslaff/lightsleep

lsleep

lsleep.py is very short simple CLI utility (better then /usr/bin/sleep) which is also demo how to use lightsleep python module.

Almost useless example where lsleep is identical to /usr/bin/sleep (sleep 60 seconds):

lsleep.py 60

Even this example has some benefits - if your program will run external program lsleep.py instead of sleep(), you can always send kill to lsleep (e.g. with killall lsleep.py) and this is much more reliable then interrupting sleep() inside program. But thats same as /usr/bin/sleep.

If -t/--title set, lsleep.py will use setproctitle. So, you may call lsleep.py 600 -t mysleep and then killall mysleep to stop only this lsleep process.

lsleep.py -h will list all available hooks and their default options

Interrupt sleep with touch or any write

lsleep.py 300 --hook mtime path=/tmp/x

You can interrupt sleep with touch /tmp/x or echo anything > /tmp/x.

interrupt sleep with redis PUBLISH command

lsleep.py 60 --hook redis (defaults: local redis server, channel sleep)

Interrupt this sleep from redis-cli:

127.0.0.1:6379> PUBLISH sleep anything
(integer) 1

To override defaults parameters:

lsleep.py 60 --hook redis url=redis://localhost:6379/0 msg=stop ch=sleep

(seting msg to any value will requre to PUBLISH exact this value. If msg is not set, any message will interrupt sleep)

Interrupt sleep with websocket

lsleep.py 300 --hook ws url=http://localhost:8899/ room=myapps::u1 secret=myapps-pass

You may use ws-emit websocket application as server.

optional secret if room requires secret to join (when room name containts '::'). This should match ws-emit secret in redis, set with SET ws-emit::secret::myapps myapps-pass

If event and data specified, sleep will be interrupted only if websocket event name and data matches it.

Using sleep in your package

See lsleep.py code, it's very small. Example:

from lightsleep import Sleep

s = Sleep(hook=['redis','msg=stop', 'ch=sleep'])
s.sleep(60)

sleep() returns message which interrupted sleep (if hook supports this). For example, if redis hook used and sleep was interrupted with PUBLISH sleep zzz, sleep() will return zzz.

Metadata

Release files for lightsleep 0.0.6

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

Built distribution (wheel)

Table of built distributions (wheels) for lightsleep 0.0.6
File Interpreter ABI Platform
lightsleep-0.0.6-py3-none-any.whl Python 3 none any Details

Release files / lightsleep-0.0.6-py3-none-any.whl

Download URL lightsleep-0.0.6-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3365442475bce9c1b3512895ece3e3fd22d37f5f4502fe82af7f1a28318be831
BLAKE2b-256 checksum
How to use checksums
0384354ee26117d5cc2697d418b872d35b45547dea322e1d0706ea5af1641c8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.2

Security for lightsleep 0.0.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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