API workers using Gearman::Driver
[cloudstore.git] / gearman / api_workers.pl
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Gearman::Driver;
5 use lib '/srv/cloudstore/lib';
6
7 BEGIN {
8         $ENV{NAME} ||= $1 if $0 =~ m{([^/]+)$};
9         die "no SLICE in enviroment" unless $ENV{SLICE};
10 }
11
12 our $log = "$ENV{SLICE}/log/$ENV{NAME}.log",
13
14 my $driver = Gearman::Driver->new(
15         namespaces => [qw(CloudStore::Gearman)],
16         configfile => 'config.yaml',
17         loglevel   => 'DEBUG',
18         logfile    => $log,
19         server     => $ENV{GEARMAN} || 'localhost:4730',
20         interval   => 3,
21         job_runtime_attributes => {
22                 'CloudStore::Gearman::API::create_user' => {
23                         max_processes => 1,
24                         min_processes => 1,
25                 },
26         },
27 );
28
29 open(my $pid, '>', "/tmp/$ENV{NAME}.pid");
30 print $pid "$$\n";
31 close $pid;
32
33 warn localtime() . " STARTED $ENV{NAME} pid $$ log $log\n";
34 $driver->run;