Changelog 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. ==============
  2. Change history
  3. ==============
  4. 0.1.12 :date:`2009-05-18 04:38 P.M CET` :author:askh@opera.com
  5. * delay_task() etc. now returns :class:`celery.task.AsyncResult` object,
  6. which lets you check the result and any failure that might have happened.
  7. It kind of works like the ``multiprocessing.AsyncResult`` class returned
  8. by ``multiprocessing.Pool.map_async``.
  9. * Added dmap() and dmap_async(). This works like the
  10. * ``multiprocessing.Pool`` versions except they are tasks distributed
  11. to the celery server. Example:
  12. >>> from celery.task import dmap
  13. >>> import operator
  14. >>> dmap(operator.add, [[2, 2], [4, 4], [8, 8]])
  15. >>> [4, 8, 16]
  16. >>> from celery.task import dmap_async
  17. >>> import operator
  18. >>> result = dmap_async(operator.add, [[2, 2], [4, 4], [8, 8]])
  19. >>> result.ready()
  20. False
  21. >>> time.sleep(1)
  22. >>> result.ready()
  23. True
  24. >>> result.result
  25. [4, 8, 16]
  26. * Refactored the task metadata cache and database backends, and added
  27. a new backend for Tokyo Tyrant. You can set the backend in your django
  28. settings file. e.g
  29. CELERY_BACKEND = "database"; # Uses the database
  30. CELERY_BACKEND = "cache"; # Uses the django cache framework
  31. CELERY_BACKEND = "tyrant"; # Uses Tokyo Tyrant
  32. TT_HOST = "localhost"; # Hostname for the Tokyo Tyrant server.
  33. TT_PORT = 6657; # Port of the Tokyo Tyrant server.
  34. 0.1.11 :date:`2009-05-12 02:08 P.M CET` :author:askh@opera.com
  35. * The logging system was leaking file descriptors, resulting in servers
  36. stopping with the EMFILES (too many open files) error. (fixed)
  37. 0.1.10 :date:`2009-05-11 12:46 P.M CET` :author:askh@opera.com
  38. * Tasks now supports both positional arguments and keyword arguments.
  39. * Requires carrot 0.3.8.
  40. * The daemon now tries to reconnect if the connection is lost.
  41. 0.1.8 :date:`2009-05-07 12:27 P.M CET` :author:askh@opera.com
  42. * Better test coverage
  43. * More documentation
  44. * celeryd doesn't emit "Queue is empty" message if
  45. :setting:`CELERYD_EMPTY_MSG_EMIT_EVERY` is 0.
  46. 0.1.7 :date:`2009-04-30 1:50 P.M CET` :author:askh@opera.com
  47. * Added some unittests
  48. * Can now use the database for task metadata (like if the task
  49. has been executed or not). Set :setting:`CELERY_TASK_META`
  50. * Can now run ``python setup.py test`` to run the unittests from within
  51. the ``testproj`` project.
  52. * Can set the AMQP exchange/routing key/queue using
  53. :setting:`CELERY_AMQP_EXCHANGE`, :setting:`CELERY_AMQP_ROUTING_KEY`,
  54. and :setting:`CELERY_AMQP_CONSUMER_QUEUE`.
  55. 0.1.6 :date:`2009-04-28 2:13 P.M CET` :author:askh@opera.com
  56. * Introducing ``TaskSet``. A set of subtasks is executed and you can find
  57. out how many, or if all them, are done (excellent for progress bars and
  58. such)
  59. * Now catches all exceptions when running ``Task.__call__``, so the daemon
  60. doesn't die. This does't happen for pure functions yet, only
  61. :class:`Task` classes.
  62. * ``autodiscover()`` now works with zipped eggs.
  63. * celeryd: Now adds curernt working directory to ``sys.path`` for
  64. convenience.
  65. * The ``run_every`` attribute of :class:`PeriodicTask` classes can now
  66. be a :class:`datetime.timedelta()` object.
  67. * celeryd: You can now set the ``DJANGO_PROJECT_DIR`` variable for
  68. ``celeryd`` and it will add that to ``sys.path`` for easy launching.
  69. * Can now check if a task has been executed or not via HTTP.
  70. You can do this by including the celery ``urls.py`` into your project,
  71. >>> url(r'^celery/$', include("celery.urls"))
  72. then visiting the following url,::
  73. http://mysite/celery/$task_id/done/
  74. this will return a JSON dictionary like e.g:
  75. >>> {"task": {"id": $task_id, "executed": true}}
  76. * ``delay_task`` now returns string id, not :class:`uuid.UUID` instance.
  77. * Now has ``PeriodicTasks``, to have ``cron`` like functionality.
  78. * Project changed name from ``crunchy`` to ``celery``. The details of
  79. the name change request is in ``docs/name_change_request.txt``.
  80. 0.1.0 :date:`2009-04-24 11:28 A.M CET` :author:askh@opera.com
  81. --------------------------------------------------------------
  82. * Initial release