diff --git a/beat/web/backend/schedule.py b/beat/web/backend/schedule.py
index 10c8fbf9c74d2a39090214921be9617793d611e6..5d9f3cbe7be5ca582ef1a943ec743831c6c6795a 100644
--- a/beat/web/backend/schedule.py
+++ b/beat/web/backend/schedule.py
@@ -36,6 +36,7 @@ import subprocess
 import logging
 logger = logging.getLogger(__name__)
 
+import psutil
 import simplejson
 
 from django.conf import settings
@@ -475,6 +476,14 @@ def work(environments, cpulimit, process, django_settings):
         subprocess.Popen(cmdline + [execute, str(j.pk)])
 
 
+def cleanup_zombies():
+    '''Cleans-up eventual zombie subprocesses launched by the call above'''
+
+    for child in psutil.Process().children():
+        if child.status == psutil.STATUS_ZOMBIE:
+            child.wait()
+
+
 def resolve_process_path():
   '''Returns the path to cpulimit'''
 
diff --git a/beat/web/backend/views.py b/beat/web/backend/views.py
index 49054cd88bd1e192841b2bf9dad5785ba45be226..49192162125d7d624dbf775feb4d1b4dca2d6d45 100644
--- a/beat/web/backend/views.py
+++ b/beat/web/backend/views.py
@@ -46,7 +46,7 @@ from beat.core.async import resolve_cpulimit_path
 from .models import Environment, Worker, Queue
 from ..experiments.models import Experiment
 from . import state
-from .schedule import schedule, work, worker_update
+from .schedule import schedule, work, worker_update, cleanup_zombies
 from .schedule import find_environments, resolve_process_path
 
 
@@ -59,13 +59,13 @@ class Work:
     cpulimit = resolve_cpulimit_path(None)
     process = resolve_process_path()
     environments = find_environments(None)
-    django_settings = os.environ.get('DJANGO_SETTINGS_MODULE',
-        'beat.web.settings.zzz')
+    django_settings = os.environ.get('DJANGO_SETTINGS_MODULE')
+
 
     def __call__(self):
         # update workers that require updates
         worker_update()
-
+        cleanup_zombies()
         work(
             Work.environments,
             Work.cpulimit,
@@ -102,7 +102,7 @@ def scheduler(request):
     cache_gb = int(cache['capacity-in-megabytes'] / 1024.0)
 
     # do scheduling and/or worker activity if required
-    if request.GET.has_key('activity'):
+    if settings.SCHEDULING_PANEL and request.GET.has_key('activity'):
         activity = request.GET['activity']
 
         if activity in ('both', 'schedule'):