NAME

Forks::Queue::File - file-based implementation of Forks::Queue

VERSION

0.12

SYNOPSIS

my $q = Forks::Queue::File->new( file => "queue-file" );
$q->put( "job1" );
$q->put( { name => "job2", task => "do something", data => [42,19] } );
...
$q->end;
for my $w (1 .. $num_workers) {
    if (fork() == 0) {
        my $task;
        while (defined($task = $q->get)) {
            ... perform task in child ...
        }
        exit;
    }
}

METHODS

See Forks::Queue for an overview of the methods supported by this Forks::Queue implementation.

new

$queue = Forks::Queue::File->new( %opts )

$queue = Forks::Queue->new( impl => 'File', %opts )

The Forks::Queue::File constructor recognized the following configuration options.

  • file

    The name of the file to use to score queue data and metadata. If omitted, a temporary filename is chosen.

    It is strongly recommended not to use a file that would reside on an NFS filesystem, since these filesystems have notorious difficulty with synchronizing files across processes.

  • style

  • limit

  • on_limit

  • join

  • persist

    See "new" in Forks::Queue for descriptions of these options.

BUGS AND LIMITATIONS

As with anything that requires flock, you should avoid allowing the queue file to reside on an NFS drive.

LICENSE AND COPYRIGHT

Copyright (c) 2017-2019, Marty O'Brien.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.1 or, at your option, any later version of Perl 5 you may have available.

See http://dev.perl.org/licenses/ for more information.