|  | @@ -14,6 +14,7 @@ import multiprocessing
 | 
	
		
			
				|  |  |  import traceback
 | 
	
		
			
				|  |  |  import threading
 | 
	
		
			
				|  |  |  import logging
 | 
	
		
			
				|  |  | +import signal
 | 
	
		
			
				|  |  |  import socket
 | 
	
		
			
				|  |  |  import time
 | 
	
		
			
				|  |  |  import sys
 | 
	
	
		
			
				|  | @@ -85,9 +86,6 @@ def jail(task_id, func, args, kwargs):
 | 
	
		
			
				|  |  |      # Backend process cleanup
 | 
	
		
			
				|  |  |      default_backend.process_cleanup()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    # Convert any unicode keys in the keyword arguments to ascii.
 | 
	
		
			
				|  |  | -    kwargs = dict([(k.encode("utf-8"), v)
 | 
	
		
			
				|  |  | -                        for k, v in kwargs.items()])
 | 
	
		
			
				|  |  |      try:
 | 
	
		
			
				|  |  |          result = func(*args, **kwargs)
 | 
	
		
			
				|  |  |      except (SystemExit, KeyboardInterrupt):
 | 
	
	
		
			
				|  | @@ -179,6 +177,11 @@ class TaskWrapper(object):
 | 
	
		
			
				|  |  |          task_id = message_data["id"]
 | 
	
		
			
				|  |  |          args = message_data["args"]
 | 
	
		
			
				|  |  |          kwargs = message_data["kwargs"]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        # Convert any unicode keys in the keyword arguments to ascii.
 | 
	
		
			
				|  |  | +        kwargs = dict([(key.encode("utf-8"), value)
 | 
	
		
			
				|  |  | +                    for key, value in kwargs.items()])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          if task_name not in tasks:
 | 
	
		
			
				|  |  |              raise UnknownTask(task_name)
 | 
	
		
			
				|  |  |          task_func = tasks[task_name]
 | 
	
	
		
			
				|  | @@ -274,7 +277,7 @@ class PeriodicWorkController(threading.Thread):
 | 
	
		
			
				|  |  |          super(PeriodicWorkController, self).__init__()
 | 
	
		
			
				|  |  |          self._shutdown = threading.Event()
 | 
	
		
			
				|  |  |          self._stopped = threading.Event()
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def run(self):
 | 
	
		
			
				|  |  |          """Don't use :meth:`run`. use :meth:`start`."""
 | 
	
		
			
				|  |  |          while True:
 |