Podder now runs with an associated thread pool.

This allows podder to parallelize requests to docker.

Change-Id: Iacae80a63bcd68ef7b471d63dbb41b7314d3af20
diff --git a/podder/handlers.py b/podder/handlers.py
index 2cafc7e..825cd60 100644
--- a/podder/handlers.py
+++ b/podder/handlers.py
@@ -15,6 +15,7 @@
 #
 from common.utils.dockerhelpers import create_host_config, create_container, start_container, create_networking_config, \
     get_all_running_containers, inspect_container, remove_container
+from docker import errors
 
 from structlog import get_logger
 import yaml
@@ -77,7 +78,10 @@
 def service_shutdown(service, instance_name, config):
     containers = get_all_running_containers()
     for container in containers:
-        info = inspect_container(container['Id'])
+        try:
+            info = inspect_container(container['Id'])
+        except errors.NotFound, e:
+            continue
         envs = info['Config']['Env']
         for env in envs:
             for name in env.split('='):
diff --git a/podder/main.py b/podder/main.py
index d02fc63..412ae58 100755
--- a/podder/main.py
+++ b/podder/main.py
@@ -35,7 +35,8 @@
     instance_id=os.environ.get('INSTANCE_ID', os.environ.get('HOSTNAME', '1')),
     internal_host_address=os.environ.get('INTERNAL_HOST_ADDRESS',
                                          get_my_primary_local_ipv4()),
-    work_dir=os.environ.get('WORK_DIR', '/tmp/podder')
+    work_dir=os.environ.get('WORK_DIR', '/tmp/podder'),
+    threads=os.environ.get('PODDER_THREADS', 5)
 )
 
 def parse_args():
@@ -103,6 +104,14 @@
                         action='count',
                         help=_help)
 
+    _help = 'Number of events to handle in parallel'
+    parser.add_argument('-e', '--events-in-parallel',
+                        dest='threads',
+                        type=int,
+                        default=defs['threads'],
+                        action='store',
+                        help=_help)
+
 
     args = parser.parse_args()
 
diff --git a/podder/podder.py b/podder/podder.py
index 7cd166d..e3a2fe4 100644
--- a/podder/podder.py
+++ b/podder/podder.py
@@ -27,7 +27,7 @@
     def __init__(self, args, slave_config):
         self.log.info('Initializing Podder')
         self.running = False
-        self.events = EventProcessor()
+        self.events = EventProcessor(threads=args.threads)
         self.handlers = { 'podder_config' : Template(slave_config) }
 
     def run(self):