Might want to use two locks? One acquired by manual scripts in shared mode, and one acquired by both the queue and manual scripts, in exclusive mode. This allows the queue to determine if any manual script is awaiting the main (exclusive) lock before it locks it. It means the queue will defer to manual scripts if there are any.
Do we need to write PID in the lock files? Maybe we only ever need to send signals to the queue process, in which case maybe systemd can create a well known PID file for us
/run/lock
, which is tmpfsfcntl.lockf
: https://docs.python.org/3/library/fcntl.html#fcntl.lockf (see: https://chris.improbable.org/2010/12/16/everything-you-never-wanted-to-know-about-file-locking/ )