Skip to main content

Python module to prevent macOS system sleep using the caffeinate(1) command

Project description

selfcaffeinate

Description

Python module to prevent macOS system sleep using the caffeinate(1) command

Introduction to caffeinate(1)

macOS users can prevent system sleep using the system command caffeinate like so:

$ caffeinate sh -c "echo sleeping; sleep 60; echo done"
sleeping
done
$

Or hold a power management assertion on an existing process:

$ pgrep long-running-process
555
$ caffeinate -w 555 && echo "done"
done

This module allows caffeinate to be used programmatically from Python code to prevent system sleep, without having to run the command externally.

Example usage

def main():
    print("Self caffeinating")
    SLEEP_PERIOD = 60
    sc = SelfCaffeinate()
    for i in range(0, 60):
        print("Sleeping {}".format(SLEEP_PERIOD))
        time.sleep(SLEEP_PERIOD)

Or use the with pattern:

def main():
    print("Self caffeinating")
    SLEEP_PERIOD = 60
    with SelfCaffeinate():
      for i in range(0, 60):
          print("Sleeping {}".format(SLEEP_PERIOD))
          time.sleep(SLEEP_PERIOD)

The default path to macOS's caffeinate should work, but if you have an alternate path, you can specify that:

def main():
    print("Self caffeinating")
    SLEEP_PERIOD = 60
    sc = SelfCaffeinate(caffeinate_path="/path/to/my/weird/caffeinate")
    for i in range(0, 60):
        print("Sleeping {}".format(SLEEP_PERIOD))
        time.sleep(SLEEP_PERIOD)

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

selfcaffeinate-0.1.0.tar.gz (3.3 kB view hashes)

Uploaded Source

Built Distribution

selfcaffeinate-0.1.0-py3-none-any.whl (4.2 kB view hashes)

Uploaded Python 3

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