selfcaffeinate
Description
Python module to prevent macOS system sleep using the caffeinate(1)
command
caffeinate(1)
Introduction to 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)