announcement.rst 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. ===============================
  2. Celery 1.0 has been released!
  3. ===============================
  4. We're happy to announce the release of Celery 1.0.
  5. Stable API
  6. ==========
  7. From this version on the API will be considered stable. This means there won't be any backwards
  8. incompatible changes to new minor versions. Changes to the API needs to be
  9. deprecated; so, for example, if we decided to remove a function that existed in Celery 1.0:
  10. * Celery 1.2 will contain a backwards-compatible replica of the function which
  11. will raise a ``PendingDeprecationWarning``.
  12. This warning is silent by default; you need to explicitly turn on display of these warnings.
  13. * Celery 1.4 will contain the backwards-compatible replica, but the warning will be promoted to
  14. a full-fledged ``DeprecationWarning``. This warning is loud by default, and will likely be
  15. quite annoying.
  16. * Celery 1.6 will remove the feature outright.
  17. See the `Celery Deprecation Timeline`_ for a list of pending removals.
  18. .. _`Celery Deprecation Timeline`:
  19. http://ask.github.com/celery/internals/deprecation.html
  20. What's new?
  21. ===========
  22. * New periodic task service.
  23. Periodic tasks are no longer dispatched by ``celeryd``, but by a separate
  24. service called ``celerybeat``. This is an optimized, centralized service
  25. dedicated to your periodic tasks, which means you don't have to
  26. worry about deadlocks or race conditions any more. But, also it means you
  27. have to make sure only one instance of the service is running at any one
  28. time.
  29. **TIP:** If you're only running a single ``celeryd`` server, you can embed
  30. ``celerybeat`` inside it. Just add the ``--beat`` argument.
  31. * Tasks are automatically registered
  32. Registering the tasks manually was getting tedious, so now you don't have
  33. to anymore. However -- You can still do it manually if you need to, just
  34. disable :attr:`Task.autoregister`.
  35. * Awesome new task decorators
  36. Write your tasks as regular functions and decorate them.
  37. There's both :func:`task`, and :func:`periodic_task` decorators.
  38. * Events
  39. If enabled, the worker is now sending events, telling you what it's
  40. doing, and wether it's alive or not. This is the basis for the new
  41. real-time web monitor we're working on.
  42. * Rate limiting
  43. Global and per task rate limits. 10 tasks a second? or one an hour? You
  44. got it. It's using the awesome bucket queue algorithm, which is commonly
  45. used for network traffic shaping. It accounts for bursts of activity, so
  46. your workers won't be bored by having nothing to do.
  47. * Broadcast commands
  48. You can now revoke tasks if you suddenly change your mind and don't want to run
  49. the task anyway, or you can rate limit tasks or shut down the worker remotely.
  50. It doesn't have many commands yet, but we're waiting for broadcast commands to
  51. reach its full potential. Maybe you have some ideas of your own?
  52. * Multiple queues
  53. The worker is now able to receive tasks on multiple queues at once. This
  54. means you can route tasks to arbitrary workers. Read about the insane
  55. routing powers of AMQP, and you will surely end up being mighty impressed.
  56. * Platform agnostic message format.
  57. The message format has been standardized and now uses the ISO-8601 format
  58. for dates instead of Python datetime objects. This means you can write task
  59. consumers in other languages than Python (``eceleryd`` anyone?)
  60. * Timely
  61. Periodic tasks are now scheduled on the clock, i.e. ``timedelta(hours=1)``
  62. means every hour at :00 minutes, not every hour from the server starts.
  63. To revert to the previous behaviour you can enable
  64. :attr:`PeriodicTask.relative`.
  65. * Plus a lot more
  66. To read more about these and other changes in detail, please refer to the `changelog`_.
  67. This document contains crucial information, so if you're upgrading from a previous version of Celery,
  68. be sure to read the entire change set before you continue.
  69. .. _`changelog`: http://ask.github.com/celery/changelog.html
  70. **TIP:** If you install the :mod:`setproctitle` module you can see which task each
  71. worker process is currently executing in ``ps`` listings. Just install it
  72. using pip: ``pip install setproctitle``.