forked from celery/celery
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changelog
394 lines (247 loc) · 11.4 KB
/
Changelog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
.. _changelog:
================
Change history
================
.. contents::
:local:
If you're looking for versions prior to 3.x you should see :ref:`history`.
.. _version-3.1.0:
3.1.0
=====
:state: DEVEL
:branch: master
- `celery inspect stats` now contains worker pid
- `Task.apply_async` now supports timeout and soft_timeout arguments (Issue #802)
- `App.control.Inspect.conf` can be used for inspecting worker configuration
.. _version-3.0.6:
3.0.6
=====
:release-date: 2012-09-17 11:00 P.M BST
- Now depends on kombu 2.4.0
- Now depends on billiard 2.7.3.12
- Redis: Celery now tries to restore messages whenever there are no messages
in the queue.
- Crontab schedules now properly respects :setting:`CELERY_TIMEZONE` setting.
It's important to note that crontab schedules uses UTC time by default
unless this setting is set.
Issue #904 and django-celery #150.
- ``billiard.enable_forking`` is now only set by the processes pool.
- The transport is now properly shown by :program:`celery report`
(Issue #913).
- The `--app` argument now works if the last part is a module name
(Issue #921).
- Fixed problem with unpickleable exceptions (billiard #12).
- Adds ``task_name`` attribute to ``EagerResult`` which is always
:const:`None` (Issue #907).
- Old Task class in :mod:`celery.task` no longer accepts magic kwargs by
default (Issue #918).
A regression long ago disabled magic kwargs for these, and since
no one has complained about it we don't have any incentive to fix it now.
- The ``inspect reserved`` control command did not work properly.
- Should now play better with static analyzation tools by explicitly
specifying dynamically created attributes in the :mod:`celery` and
:mod:`celery.task` modules.
- Terminating a task now results in
:exc:`~celery.exceptions.RevokedTaskError` instead of a ``WorkerLostError``.
- ``AsyncResult.revoke`` now accepts ``terminate`` and ``signal`` arguments.
- The ``task-revoked`` event now includes new fields: ``terminated``,
``signum``, and ``expired``.
- The argument to :class:`~celery.exceptions.TaskRevokedError` is now one
of the reasons ``revoked``, ``expired`` or ``terminated``.
- Old Task class does no longer use classmethods for push_request and
pop_request (Issue #912).
- ``GroupResult`` now supports the ``children`` attribute (Issue #916).
- ``AsyncResult.collect`` now respects the ``intermediate`` argument
(Issue #917).
- Fixes example task in documentation (Issue #902).
- Eventlet fixed so that the environment is patched as soon as possible.
- eventlet: Now warns if celery related modules that depends on threads
are imported before eventlet is patched.
- Improved event and camera examples in the monitoring guide.
- Disables celery command setuptools entrypoints if the command can't be
loaded.
- Fixed broken ``dump_request`` example in the tasks guide.
.. _version-3.0.5:
3.0.5
=====
:release-date: 2012-08-01 04:00 P.M BST
- Now depends on kombu 2.3.1 + billiard 2.7.3.11
- Fixed a bug with the -B option (``cannot pickle thread.lock objects``)
(Issue #894 + Issue #892, + django-celery #154).
- The :control:`restart_pool` control command now requires the
:setting:`CELERYD_POOL_RESTARTS` setting to be enabled
This change was necessary as the multiprocessing event that the restart
command depends on is responsible for creating many semaphores/file
descriptors, resulting in problems in some environments.
- ``chain.apply`` now passes args to the first task (Issue #889).
- Documented previously secret options to the Django-Celery monitor
in the monitoring userguide (Issue #396).
- Old changelog are now organized in separate documents for each series,
see :ref:`history`.
.. _version-3.0.4:
3.0.4
=====
:release-date: 2012-07-26 07:00 P.M BST
- Now depends on Kombu 2.3
- New experimental standalone Celery monitor: Flower
See :ref:`monitoring-flower` to read more about it!
Contributed by Mher Movsisyan.
- Now supports AMQP heartbeats if using the new ``pyamqp://`` transport.
- The py-amqp transport requires the :mod:`amqp` library to be installed::
$ pip install amqp
- Then you need to set the transport URL prefix to ``pyamqp://``.
- The default heartbeat value is 10 seconds, but this can be changed using
the :setting:`BROKER_HEARTBEAT` setting::
BROKER_HEARTBEAT = 5.0
- If the broker heartbeat is set to 10 seconds, the heartbeats will be
monitored every 5 seconds (double the hertbeat rate).
See the `Kombu 2.3 changelog`_ for more information.
.. _`Kombu 2.3 changelog`:
http://kombu.readthedocs.org/en/latest/changelog.html#version-2-3-0
- Now supports RabbitMQ Consumer Cancel Notifications, using the ``pyamqp://``
transport.
This is essential when running RabbitMQ in a cluster.
See the `Kombu 2.3 changelog`_ for more information.
- Delivery info is no longer passed directly through.
It was discovered that the SQS transport adds objects that can't
be pickled to the delivery info mapping, so we had to go back
to using the whitelist again.
Fixing this bug also means that the SQS transport is now working again.
- The semaphore was not properly released when a task was revoked (Issue #877).
This could lead to tasks being swallowed and not released until a worker
restart.
Thanks to Hynek Schlawack for debugging the issue.
- Retrying a task now also forwards any linked tasks.
This means that if a task is part of a chain (or linked in some other
way) and that even if the task is retried, then the next task in the chain
will be executed when the retry succeeds.
- Chords: Now supports setting the interval and other keyword arguments
to the chord unlock task.
- The interval can now be set as part of the chord subtasks kwargs::
chord(header)(body, interval=10.0)
- In addition the chord unlock task now honors the Task.default_retry_delay
option, used when none is specified, which also means that the default
interval can also be changed using annotations:
.. code-block:: python
CELERY_ANNOTATIONS = {
'celery.chord_unlock': {
'default_retry_delay': 10.0,
}
}
- New :meth:`@Celery.add_defaults` method can add new default configuration
dicts to the applications configuration.
For example::
config = {'FOO': 10}
celery.add_defaults(config)
is the same as ``celery.conf.update(config)`` except that data will not be
copied, and that it will not be pickled when the worker spawns child
processes.
In addition the method accepts a callable::
def initialize_config():
# insert heavy stuff that can't be done at import time here.
celery.add_defaults(initialize_config)
which means the same as the above except that it will not happen
until the celery configuration is actually used.
As an example, Celery can lazily use the configuration of a Flask app::
flask_app = Flask()
celery = Celery()
celery.add_defaults(lambda: flask_app.config)
- Revoked tasks were not marked as revoked in the result backend (Issue #871).
Fix contributed by Hynek Schlawack.
- Eventloop now properly handles the case when the epoll poller object
has been closed (Issue #882).
- Fixed syntax error in ``funtests/test_leak.py``
Fix contributed by Catalin Iacob.
- group/chunks: Now accepts empty task list (Issue #873).
- New method names:
- ``Celery.default_connection()`` ➠ :meth:`~@Celery.connection_or_acquire`.
- ``Celery.default_producer()`` ➠ :meth:`~@Celery.producer_or_acquire`.
The old names still work for backward compatibility.
.. _version-3.0.3:
3.0.3
=====
:release-date: 2012-07-20 09:17 P.M BST
:by: Ask Solem
- amqplib passes the channel object as part of the delivery_info
and it's not pickleable, so we now remove it.
.. _version-3.0.2:
3.0.2
=====
:release-date: 2012-07-20 04:00 P.M BST
:by: Ask Solem
- A bug caused the following task options to not take defaults from the
configuration (Issue #867 + Issue #858)
The following settings were affected:
- :setting:`CELERY_IGNORE_RESULT`
- :setting:`CELERYD_SEND_TASK_ERROR_EMAILS`
- :setting:`CELERY_TRACK_STARTED`
- :setting:`CElERY_STORE_ERRORS_EVEN_IF_IGNORED`
Fix contributed by John Watson.
- Task Request: ``delivery_info`` is now passed through as-is (Issue #807).
- The eta argument now supports datetime's with a timezone set (Issue #855).
- The worker's banner displayed the autoscale settings in the wrong order
(Issue #859).
- Extension commands are now loaded after concurrency is set up
so that they don't interfere with e.g. eventlet patching.
- Fixed bug in the threaded pool (Issue #863)
- The task failure handler mixed up the fields in :func:`sys.exc_info`.
Fix contributed by Rinat Shigapov.
- Fixed typos and wording in the docs.
Fix contributed by Paul McMillan
- New setting: :setting:`CELERY_WORKER_DIRECT`
If enabled each worker will consume from their own dedicated queue
which can be used to route tasks to specific workers.
- Fixed several edge case bugs in the add consumer remote control command.
- :mod:`~celery.contrib.migrate`: Can now filter and move tasks to specific
workers if :setting:`CELERY_WORKER_DIRECT` is enabled.
Among other improvements, the following functions have been added:
* ``move_direct(filterfun, **opts)``
* ``move_direct_by_id(task_id, worker_hostname, **opts)``
* ``move_direct_by_idmap({task_id: worker_hostname, ...}, **opts)``
* ``move_direct_by_taskmap({task_name: worker_hostname, ...}, **opts)``
- :meth:`~celery.Celery.default_connection` now accepts a pool argument that
if set to false causes a new connection to be created instead of acquiring
one from the pool.
- New signal: :signal:`celeryd_after_setup`.
- Default loader now keeps lowercase attributes from the configuration module.
.. _version-3.0.1:
3.0.1
=====
:release-date: 2012-07-10 06:00 P.M BST
:by: Ask Solem
- Now depends on kombu 2.2.5
- inspect now supports limit argument::
myapp.control.inspect(limit=1).ping()
- Beat: now works with timezone aware datetime's.
- Task classes inheriting ``from celery import Task``
mistakingly enabled ``accept_magic_kwargs``.
- Fixed bug in ``inspect scheduled`` (Issue #829).
- Beat: Now resets the schedule to upgrade to UTC.
- The :program:`celery worker` command now works with eventlet/gevent.
Previously it would not patch the environment early enough.
- The :program:`celery` command now supports extension commands
using setuptools entry-points.
Libraries can add additional commands to the :program:`celery`
command by adding an entry-point like::
setup(
entry_points=[
'celery.commands': [
'foo = my.module:Command',
],
],
...)
The command must then support the interface of
:class:`celery.bin.base.Command`.
- contrib.migrate: New utilities to move tasks from one queue to another.
- :func:`~celery.contrib.migrate.move_tasks`
- :func:`~celery.contrib.migrate.move_task_by_id`
- The task-sent event now contains ``exchange`` and ``routing_key``
fields.
- Fixes bug with installing on Python 3.
Fix contributed by Jed Smith.
.. _version-3.0.0:
3.0.0 (Chiastic Slide)
======================
:release-date: 2012-07-07 01:30 P.M BST
:by: Ask Solem
See :ref:`whatsnew-3.0`.