| 
					
				 | 
			
			
				@@ -12,7 +12,7 @@ new in Celery 3.1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 3.1.7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ===== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-:release-date: 2013-12-17 X:XX P.M UTC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+:release-date: 2013-12-17 05:30 P.M UTC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .. _v317-important: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -27,8 +27,8 @@ delegated the responsibility of dropping privileges to the target application, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 it will now use ``su`` instead, so that the Python program is not trusted 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 with superuser privileges. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-This is not in reaction to any known exploit, but instead will 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-limit the possibility of a privilege escalation bug being discovered in the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+This is not in reaction to any known exploit, but it will 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+limit the possibility of a privilege escalation bug being abused in the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 future. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 You have to upgrade the init scripts manually from this directory: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -40,17 +40,45 @@ AMQP result backend 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The 3.1 release accidentally left the amqp backend configured to be 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 non-persistent by default. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Upgrading from 3.0 would give "not equivalent" errors when attempting to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-set or retrieve results for a task unless you manually set the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-persistence setting: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Upgrading from 3.0 would give a "not equivalent" error when attempting to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+set or retrieve results for a task.  That is unless you manually set the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+persistence setting:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CELERY_RESULT_PERSISTENT = True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-This version restores the previous setting so if you already forced 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-this upgrade by removing the existing exchange you must either 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+This version restores the previous value so if you already forced 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+the upgrade by removing the existing exchange you must either 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 keep the configuration by setting ``CELERY_RESULT_PERSISTENT = False`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 or delete the ``celeryresults`` exchange again. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Synchronous subtasks 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+~~~~~~~~~~~~~~~~~~~~ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Tasks waiting for the result of a subtask will now emit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+a :exc:`RuntimeWarning` warning when using the prefork pool, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+and in 3.2 this will result in an exception being raised. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+It's not legal for tasks to block by waiting for subtasks 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+as this is likely to lead to resource starvation and eventually 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+deadlock when using the prefork pool (see also :ref:`task-synchronous-subtasks`). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If you really know what you are doing you can avoid the warning (and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+the future exception being raised) by moving the operation in a whitelist 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+block: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.. code-block:: python 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    from celery.result import allow_join_result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @app.task 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def misbehaving(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        result = other_task.delay() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        with allow_join_result(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            result.get() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Note also that if you wait for the result of a subtask in any form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+when using the prefork pool you must also disable the pool prefetching 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+behavior with the worker :ref:`-Ofair option <prefork-pool-prefetch>`. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .. _v317-fixes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,7 +89,7 @@ Fixes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 - Now depends on :mod:`billiard` 3.3.0.13 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- Events: Fixed compatability with non-standard json libraries 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+- Events: Fixed compatibility with non-standard json libraries 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   that sends float as :class:`decimal.Decimal` (Issue #1731) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 - Events: State worker objects now always defines attributes: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -98,6 +126,12 @@ Fixes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 - Fixed bug in ``utcoffset`` where the offset when in DST would be 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   completely wrong (Issue #1743). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+- Worker: Errors occurring while attempting to serialize the result of a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  task will now cause the task to be marked with failure and a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  :class:`kombu.exceptions.EncodingError` error. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Fix contributed by Ionel Cristian Mărieș. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 - Worker with ``-B`` argument did not properly shut down the beat instance. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 - Worker: The ``%n`` and ``%h`` formats are now also supported by the 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -136,11 +170,13 @@ Fixes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     instead it will fake the value by using the current clock with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     a skew of -1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- Prefork pool: The method used to find terminated process was flawed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  in that it did not also take into account a missing popen object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+- Prefork pool: The method used to find terminated processes was flawed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  in that it did not also take into account missing popen objects. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-- Events: No longer takes clock value from ``task-sent`` events. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+- Canvas: ``group`` and ``chord`` now works with anon signatures as long 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  as the group/chord object is associated with an app instance (Issue #1744). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    You can pass the app by using ``group(..., app=app)``. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .. _version-3.1.6: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |