| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
- <meta charset="utf-8">
 
- <meta name="keywords" content="task queue, job queue, asynchronous, rabbitmq, amqp,
 
- redis, django, python, webhooks, queue, distributed">
 
- <meta name="description" content="open source distributed task queue" >
 
- <link rel="icon" type="image/png" href="favicon.png">
 
- <meta name="viewport" content="width=320, user-scalable=no">
 
- <link rel="apple-touch-icon" href="favicon_64.png"/>
 
- <title>Celery - The Distributed Task Queue</title>
 
- <link rel="stylesheet" href="main.css"/>
 
- <link rel="stylesheet" href="trac.css"/>
 
- <script type="text/javascript">
 
- var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
 
- document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
 
- </script>
 
- <script type="text/javascript">
 
- try {
 
- var pageTracker = _gat._getTracker("UA-12986238-1");
 
- pageTracker._trackPageview();
 
- } catch(err) {}</script>
 
- </head>
 
- <body>
 
- <div id="navbar">
 
-   <div class="iStretch">
 
-     <div class="link" id="current"><a href="/">Home</a></div>
 
-     <div class="link"><a href="http://github.com/ask/celery">Code</a></div>
 
-     <div class="link"><a href="docs/">Documentation</a></div>
 
-     <div class="link"><a href="http://ask.github.com/celery/getting-started/">Tutorials</a></div>
 
-     <div class="link"><a href="http://pypi.python.org/pypi/celery">Download</a></div>
 
-   </div>
 
- </div>
 
- <div class="iStretch">
 
-   <div id="topcontainer">
 
-   <ul>
 
-     <li>Background Processing
 
-     <li>Distributed
 
-     <li>Asynchronous/Synchronous
 
-     <li>Concurrency
 
-     <li>Periodic Tasks
 
-     <li>Retries
 
-   </ul>
 
-   </div>
 
-   <div id="contentcontainer">
 
-     <div class="column">
 
- <h1>Celery 1.0 has been released!</a></h1>
 
- <p>We’re happy to announce the release of Celery 1.0.</p>
 
- <div class="section" id="what-is-it">
 
- <h2>What is it?</h2>
 
- <p>Celery is a task queue/job queue based on distributed message passing.
 
- It is focused on real-time operation, but supports scheduling as well.</p>
 
- <p>The execution units, called tasks, are executed concurrently on one or
 
- more worker servers. Tasks can execute asynchronously (in the background) or synchronously
 
- (wait until ready).</p>
 
- <p>Celery is already used in production to process millions of tasks a day.</p>
 
- <p>Celery was originally created for use with Django, but is now usable
 
- from any Python project. It can
 
- also operate with other languages via webhooks.</p>
 
- <p>The recommended message broker is <a class="reference external" href="http://rabbitmq.org">RabbitMQ</a>, but support for Redis or
 
- database is also available.</p>
 
- <div class="section" id="features">
 
- <h3>Features</h3>
 
- <p>See <a class="reference external" href="http://ask.github.com/celery/getting-started/introduction.html#features">http://ask.github.com/celery/getting-started/introduction.html#features</a></p>
 
- </div>
 
- </div>
 
- <div class="section" id="stable-api">
 
- <h2>Stable API</a></h2>
 
- <p>From this version on the public API is considered stable. This means there won’t
 
- be any backwards incompatible changes in new minor versions. Changes to the
 
- API will be deprecated; so, for example, if we decided to remove a function
 
- that existed in Celery 1.0:</p>
 
- <ul class="simple">
 
- <li>Celery 1.2 will contain a backwards-compatible replica of the function which
 
- will raise a <tt class="docutils literal"><span class="pre">PendingDeprecationWarning</span></tt>.
 
- This warning is silent by default; you need to explicitly turn on display
 
- of these warnings.</li>
 
- <li>Celery 1.4 will contain the backwards-compatible replica, but the warning
 
- will be promoted to a full-fledged <tt class="docutils literal"><span class="pre">DeprecationWarning</span></tt>. This warning
 
- is loud by default, and will likely be quite annoying.</li>
 
- <li>Celery 1.6 will remove the feature outright.</li>
 
- </ul>
 
- <p>See the <a class="reference external" href="http://ask.github.com/celery/internals/deprecation.html">Celery Deprecation Timeline</a> for a list of pending removals.</p>
 
- </div>
 
- <div class="section" id="what-s-new">
 
- <h2>What’s new?</h2>
 
- <ul>
 
- <li><p class="first">Task decorators</p>
 
- <p>Write tasks as regular functions and decorate them.
 
- There are both <tt class="xref docutils literal"><span class="pre">task()</span></tt>, and <tt class="xref docutils literal"><span class="pre">periodic_task()</span></tt> decorators.</p>
 
- </li>
 
- <li><p class="first">Tasks are automatically registered</p>
 
- <p>Registering the tasks manually was getting tedious, so now you don’t have
 
- to anymore. You can still do it manually if you need to, just
 
- disable <tt class="xref docutils literal"><span class="pre">Task.autoregister</span></tt>. The concept of abstract task classes
 
- has also been introduced, this is like django models, where only the
 
- subclasses of an abstract task is registered.</p>
 
- </li>
 
- <li><p class="first">Events</p>
 
- <p>If enabled, the worker will send events, telling you what tasks it
 
- executes, their results, and how long it took to execute them. It also
 
- sends out heartbeats, so listeners are able to detect nonfunctional
 
- workers. This is the basis for the new real-time web monitor we’re working on
 
- (<a class="reference external" href="http://github.com/ask/celerymon/">celerymon</a>)</p>
 
- </li>
 
- </ul>
 
- <ul>
 
- <li><p class="first">Rate limiting</p>
 
- <p>Global and per task rate limits. 10 tasks a second? or one an hour? You
 
- decide. It’s using the awesome <a class="reference external" href="http://en.wikipedia.org/wiki/Token_bucket">token bucket algorithm</a>, which is
 
- commonly used for network traffic shaping. It accounts for bursts of
 
- activity, so your workers won’t be bored by having nothing to do.</p>
 
- </li>
 
- </ul>
 
- <ul>
 
- <li><p class="first">New periodic task service.</p>
 
- <p>Periodic tasks are no longer dispatched by <tt class="docutils literal"><span class="pre">celeryd</span></tt>, but instead by a
 
- separate service called <tt class="docutils literal"><span class="pre">celerybeat</span></tt>. This is an optimized, centralized
 
- service dedicated to your periodic tasks, which means you don’t have to
 
- worry about deadlocks or race conditions any more. But that does mean you
 
- have to make sure only one instance of this service is running at any one
 
- time.</p>
 
- <p><strong>TIP:</strong> If you’re only running a single <tt class="docutils literal"><span class="pre">celeryd</span></tt> server, you can embed
 
- <tt class="docutils literal"><span class="pre">celerybeat</span></tt> inside it. Just add the <tt class="docutils literal"><span class="pre">--beat</span></tt> argument.</p>
 
- </li>
 
- <li><p class="first">Broadcast commands</p>
 
- <p>If you change your mind and don’t want to run a task after all, you
 
- now have the option to revoke it.</p>
 
- <p>Also, you can rate limit tasks or even shut down the worker remotely.</p>
 
- <p>It doesn’t have many commands yet, but we’re waiting for broadcast
 
- commands to reach its full potential, so please share your ideas
 
- if you have any.</p>
 
- </li>
 
- <li><p class="first">Multiple queues</p>
 
- <p>The worker is able to receive tasks on multiple queues at once.
 
- This opens up a lot of new possibilities when combined with the impressive
 
- routing support in AMQP.</p>
 
- </li>
 
- <li><p class="first">Platform agnostic message format.</p>
 
- <p>The message format has been standardized and is now using the ISO-8601 format
 
- for dates instead of Python <tt class="docutils literal"><span class="pre">datetime</span></tt> objects. This means you can write task
 
- consumers in other languages than Python (<tt class="docutils literal"><span class="pre">eceleryd</span></tt> anyone?)</p>
 
- </li>
 
- <li><p class="first">Timely</p>
 
- <p>Periodic tasks are now scheduled on the clock, i.e. <tt class="docutils literal"><span class="pre">timedelta(hours=1)</span></tt>
 
- means every hour at :00 minutes, not every hour from the server starts.
 
- To revert to the previous behavior you have the option to enable
 
- <tt class="xref docutils literal"><span class="pre">PeriodicTask.relative</span></tt>.</p>
 
- </li>
 
- <li><p class="first">... and a lot more!</p>
 
- </li>
 
- </ul>
 
- <p>To read about these and other changes in detail, please refer to
 
- the <a class="reference external" href="http://ask.github.com/celery/changelog.html">changelog</a>. This document contains crucial information for those
 
- upgrading from a previous version of Celery, so be sure to read the entire
 
- change set before you continue.</p>
 
- <p><strong>TIP:</strong> If you install the <tt class="xref docutils literal"><span class="pre">setproctitle</span></tt> module you can see which
 
- task each worker process is currently executing in <tt class="docutils literal"><span class="pre">ps</span></tt> listings.
 
- Just install it using pip: <tt class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">setproctitle</span></tt>.</p>
 
- </div>
 
- <div class="section" id="resources">
 
- <h2>Resources</h2>
 
- <ul class="simple">
 
- <li><a class="reference external" href="http://celeryproject.org/docs/">Documentation</a></li>
 
- <li><a class="reference external" href="http://celeryproject.org/docs/changelog.html">Changelog</a></li>
 
- <li><a class="reference external" href="http://ask.github.com/celery/faq.html">FAQ</a></li>
 
- <li><a class="reference external" href="http://groups.google.com/group/celery-users">Mailing-list</a></li>
 
- <li><a class="reference external" href="http://twitter.com/asksol">Twitter</a></li>
 
- <li>IRC: #celery on irc.freenode.net.</li>
 
- </ul>
 
- </div>
 
-     <div class="hidden">
 
-         <p>          
 
-                    
 
-         </p>
 
-         <p>          
 
-                    
 
-         </p>
 
-         <p>          
 
-                    
 
-         </p>
 
-     </div>
 
-     </div>
 
-     <div class="column">
 
-       <span class="newsitem">
 
-       <h2>Celery 1.0 released!</h2>
 
-       <h4>By <a href="http://twitter.com/asksol">@asksol</a> on 10.02.2010</h4>
 
-       <p>Celery 1.0 has finally been released! It is available on <a
 
-           href="http://pypi.python.org/pypi/celery/1.0.0">PyPI</a> for
 
-       downloading. You can also install it via <code>pip install
 
-           celery</code>. You can read the announcement <a href="celery_1.0_released.html">here</a>.
 
-       <hr>
 
-       </span>
 
-       <span class="newsitem">
 
-       <h2>1.0 is in beta.</h2>
 
-       <h4>By <a href="http://twitter.com/asksol">@asksol</a> on 08.02.2010</h4>
 
-       <p>1.0 is scheduled to be released this week! Please help us test the latest
 
-       <a href="http://github.com/ask/celery/tarball/v1.0.0-pre4">release
 
-           candiate</a> to make this happen. To upgrade from an earlier
 
-       version, please read the <a href="http://ask.github.com/celery/changelog.html">changelog</a>.
 
-       <hr>
 
-       </span>
 
-       <span class="newsitem">
 
-       <h2>New website.</h2>
 
-       <h4>By <a href="http://twitter.com/asksol">@asksol</a> on 08.02.2010</h4>
 
-       <p>We finally got a home page. Big thanks to <a href="http://helmersworks.com">Jan Henrik Helmers</a>
 
-       <hr>
 
-       </span>
 
-     </div>
 
-   </div>
 
-  <div id="credits">
 
-      <div class="iStretch">Copyright (c) 2009-2010, <a href="http://twitter.com/asksol">Ask Solem</a> and
 
-          <a href="http://github.com/ask/celery/blob/master/AUTHORS">contributors</a>.<br>
 
-  Page design by <a href="http://www.helmersworks.com/">Jan Henrik Helmers</a>
 
-    </div>
 
-  </div>
 
- </div>
 
- </body>
 
- </html>
 
 
  |