|  | @@ -5,6 +5,139 @@
 | 
	
		
			
				|  |  |  .. contents::
 | 
	
		
			
				|  |  |      :local:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +.. _version-2.1.1:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +2.1.1
 | 
	
		
			
				|  |  | +=====
 | 
	
		
			
				|  |  | +:release-date: 2010-10-14 14:00 PM CEST
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Fixes
 | 
	
		
			
				|  |  | +-----
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* Now working on Windows again.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   Removed dependency on the pwd/grp modules.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* snapshots: Fixed race condition leading to loss of events.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* celeryd: Reject tasks with an eta that cannot be converted to timestamp.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    See issue #209
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* concurrency.processes.pool: The semaphore was released twice for each task
 | 
	
		
			
				|  |  | +  (both at ACK and result ready).
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    This has been fixed, and it is now released only once per task.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* docs/configuration: Fixed typo ``CELERYD_SOFT_TASK_TIME_LIMIT`` ->
 | 
	
		
			
				|  |  | +  :setting:`CELERYD_TASK_SOFT_TIME_LIMIT`.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    See issue #214
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* control command ``dump_scheduled``: was using old .info attribute
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* :program:`celeryd-multi`: Fixed ``set changed size during iteration`` bug
 | 
	
		
			
				|  |  | +    occuring in the restart command.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* celeryd: Accidentally tried to use additional command line arguments.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   This would lead to an error like:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    ``got multiple values for keyword argument 'concurrency'``.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Additional command line arguments are now ignored, and does not
 | 
	
		
			
				|  |  | +    produce this error.  However -- we do reserve the right to use
 | 
	
		
			
				|  |  | +    positional arguments in the future, so please do not depend on this
 | 
	
		
			
				|  |  | +    behavior.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* celerybeat: Now respects routers and task execution options again.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* celerybeat: Now reuses the publisher instead of the connection.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* Cache result backend: Using :class:`float` as the expires argument
 | 
	
		
			
				|  |  | +  to ``cache.set`` is deprecated by the memcached libraries,
 | 
	
		
			
				|  |  | +  so we now automatically cast to :class:`int`.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +News
 | 
	
		
			
				|  |  | +----
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* Now depends on carrot version 0.10.7.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* Added :setting:`CELERY_REDIRECT_STDOUTS`, and
 | 
	
		
			
				|  |  | +  :setting:`CELERYD_REDIRECT_STDOUTS_LEVEL` settings.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    :setting:`CELERY_REDIRECT_STDOUTS` is used by :program:`celeryd` and
 | 
	
		
			
				|  |  | +    :program:`celerybeat`.  All output to ``stdout`` and ``stderr`` will be
 | 
	
		
			
				|  |  | +    redirected to the current logger if enabled.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    :setting:`CELERY_REDIRECT_STDOUTS_LEVEL` decides the loglevel used and is
 | 
	
		
			
				|  |  | +    :const:`WARNING` by default.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* Added :setting:`CELERYBEAT_SCHEDULER` setting.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    This setting is used to define the default for the -S option to
 | 
	
		
			
				|  |  | +    :program:`celerybeat`.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Example:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    .. code-block:: python
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* Added Task.expires: Used to set default expiry time for tasks.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* New remote control commands: ``add_consumer`` and ``cancel_consumer``.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    .. method:: add_consumer(queue, exchange, exchange_type, routing_key,
 | 
	
		
			
				|  |  | +                             **options)
 | 
	
		
			
				|  |  | +        :module:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Tells the worker to declare and consume from the specified
 | 
	
		
			
				|  |  | +        declaration.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    .. method:: cancel_consumer(queue_name)
 | 
	
		
			
				|  |  | +        :module:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Tells the worker to stop consuming from queue (by queue name).
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Commands also added to :program:`celeryctl` and
 | 
	
		
			
				|  |  | +    :class:`~celery.task.control.inspect`.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Example using celeryctl to start consuming from queue "queue", in 
 | 
	
		
			
				|  |  | +    exchange "exchange", of type "direct" using binding key "key"::
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $ celeryctl inspect add_consumer queue exchange direct key
 | 
	
		
			
				|  |  | +        $ celeryctl inspect cancel_consumer queue
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    See :ref:`monitoring-celeryctl` for more information about the
 | 
	
		
			
				|  |  | +    :program:`celeryctl` program.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Another example using :class:`~celery.task.control.inspect`:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    .. code-block:: python
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        >>> from celery.task.control import inspect
 | 
	
		
			
				|  |  | +        >>> inspect.add_consumer(queue="queue", exchange="exchange",
 | 
	
		
			
				|  |  | +        ...                      exchange_type="direct",
 | 
	
		
			
				|  |  | +        ...                      routing_key="key",
 | 
	
		
			
				|  |  | +        ...                      durable=False,
 | 
	
		
			
				|  |  | +        ...                      auto_delete=True)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        >>> inspect.cancel_consumer("queue")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* celerybeat: Now logs the traceback if a message can't be sent.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* celerybeat: Now enables a default socket timeout of 30 seconds.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* README/introduction/homepage: Added link to `Flask-Celery`_.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.. _`Flask-Celery`: http://github.com/ask/flask-celery
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  .. _version-2.1.0:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  2.1.0
 |