Index: lang/perl/App-MadEye/trunk/lib/App/MadEye/Plugin/Worker/Gearman.pm
===================================================================
--- lang/perl/App-MadEye/trunk/lib/App/MadEye/Plugin/Worker/Gearman.pm (revision 8011)
+++ lang/perl/App-MadEye/trunk/lib/App/MadEye/Plugin/Worker/Gearman.pm (revision 8012)
@@ -16,5 +16,4 @@
 __PACKAGE__->mk_accessors(qw/task_set child_pids gearman_client/);
 
-our $TASK_TIMEOUT = 60;  # TODO: configurable
 our $CHILD_TIMEOUT = 60;  # TODO: configurable
 
@@ -65,5 +64,5 @@
         'watch',
         freeze($args), +{
-            timeout => $TASK_TIMEOUT,
+            timeout => $self->task_timeout(),
             on_fail => sub {
                 warn "GEARMAN ERROR: " . Dump($args);
@@ -136,7 +135,6 @@
 
             $context->log( debug => "watching $args->{target} by $args->{plugin}" );
-
             my $result = \undef;
-            timeout $TASK_TIMEOUT, "watching $args->{target} $args->{plugin}", sub {
+            timeout $self->task_timeout(), "watching $args->{target} $args->{plugin}", sub {
                 if ( my $message = $args->{plugin}->is_dead( $args->{target} ) ) {
                     $result = +{
@@ -151,7 +149,17 @@
     );
 
-    timeout $CHILD_TIMEOUT, 'work child', sub {
+    timeout $self->child_timeout(), 'work child', sub {
         $worker->work while 1;
     };
+}
+
+sub task_timeout {
+    my $self = shift;
+    $self->config->{config}->{task_timeout} || 10;
+}
+
+sub child_timeout {
+    my $self = shift;
+    $self->config->{config}->{child_timeout} || 60;
 }
 
@@ -177,4 +185,10 @@
                 - type: str
             required: yes
+        task_timeout:
+            type: int
+            required: no
+        child_timeout:
+            type: int
+            required: no
 
 =head1 AUTHOR
