The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Beam::Runnable::Single - Only allow one instance of this command at a time

VERSION

version 0.016

SYNOPSIS

    ### In a Runnable module
    package My::Runnable::Script;
    use Moo;
    with 'Beam::Runnable', 'Beam::Runnable::Single';
    has '+pid_file' => ( default => '/var/run/runnable-script.pid' );
    sub run { }

    ### In a container config file
    runnable:
        $class: My::Runnable::Script
        $with:
            - 'Beam::Runnable::Single'
        pid_file: /var/run/runnable-script.pid

DESCRIPTION

This role checks to ensure that only one instance of the command is running at a time. If another instance tries to run, it dies with an error instead.

Users should have access to read/write the path pointed to by "pid_file", and to read/write the directory containing the PID file.

If the command exits prematurely, the PID file will not be cleaned up. If this is undesirable, make sure to trap exceptions in your run() method and return the exit code you want.

ATTRIBUTES

pid_file

The path to a file containing the PID of the currently-running script.

METHODS

run

This role wraps the run method of your runnable class to check that there is no running instance of this task (the PID file does not exist).

SEE ALSO

Beam::Runnable

AUTHOR

Doug Bell <preaction@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Doug Bell.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.