| 
					
				 | 
			
			
				@@ -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: 
			 |