save pid file so we can restart workers
[APKPM.git] / gearman_driver.pl
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Gearman::Driver;
5 use lib 'lib';
6
7 my $dir = $0;
8 $dir =~ s{/[^/]+$}{};
9 chdir $dir || die "can't chdir into $dir";
10
11 $SIG{__WARN__} = sub { print STDERR @_ if $ENV{DEBUG} };
12
13 my $driver = Gearman::Driver->new(
14         namespaces => [qw(APKPM)],
15         configfile => 'config.yaml',
16         loglevel   => 'DEBUG',
17         logfile    => 'log/gearman.log',
18         server     => $ENV{GEARMAN} || 'localhost:4730',
19         interval   => 3,
20         job_runtime_attributes => {
21                 'APKPM::Poll::poll_prefix' => {
22                         max_processes => 1,
23                         min_processes => 0,
24                 },
25                 'APKPM::Poll::poll_ip_username' => {
26                         max_processes => 40,
27                         min_processes => 0,
28                 },
29                 'APKPM::Ping::ping' => {
30                         max_processes => 30,
31                         min_processes => 0,
32                 },
33                 'APKPM::Davolink::info' => {
34                         max_processes => 30,
35                         min_processes => 0,
36                 },
37                 'APKPM::Store::insert' => {
38                         max_processes => 2,
39                         min_processes => 0,
40                 },
41
42                 'APKPM::DSLAM::search' => {
43                         max_processes => 10,
44                         min_processes => 0,
45                 },
46                 'APKPM::CRM::search' => {
47                         max_processes => 3,
48                         min_processes => 0,
49                 },
50         },
51 );
52
53 open(my $pid, '>', '/tmp/apkpm.driver.pid');
54 print $pid "$$\n";
55 close $pid;
56
57 $driver->run;