| 
					
				 | 
			
			
				@@ -457,6 +457,9 @@ The request defines the following attributes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         current task.  If using version one of the task protocol the chain 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tasks will be in ``request.callbacks`` instead. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Example 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 An example task accessing information in the context is: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .. code-block:: python 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -528,6 +531,48 @@ see :setting:`worker_redirect_stdouts`). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             finally: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sys.stdout, sys.stderr = old_outs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.. _task-argument-checking: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Argument checking 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+----------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.. versionadded:: 4.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Celery will verify the arguments passed when you call the task, just 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+like Python does when calling a normal function: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.. code-block:: pycon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    >>> @app.task 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ... def add(x, y): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ...     return x + y 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # Calling the task with two arguments works: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    >>> add.delay(8, 8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <AsyncResult: f59d71ca-1549-43e0-be41-4e8821a83c0c> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # Calling the task with only one argument fails: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    >>> add.delay(8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Traceback (most recent call last): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      File "<stdin>", line 1, in <module> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      File "celery/app/task.py", line 376, in delay 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return self.apply_async(args, kwargs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      File "celery/app/task.py", line 485, in apply_async 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        check_arguments(*(args or ()), **(kwargs or {})) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TypeError: add() takes exactly 2 arguments (1 given) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+You can disable the argument checking for any task by setting its 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+:attr:`~@Task.typing` attribute to :const:`False`: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.. code-block:: pycon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    >>> @app.task(typing=False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ... def add(x, y): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ...     return x + y 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # Works locally, but the worker reciving the task will raise an error. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    >>> add.delay(8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <AsyncResult: f59d71ca-1549-43e0-be41-4e8821a83c0c> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Hiding sensitive information in arguments 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ----------------------------------------- 
			 |