Просмотр исходного кода

Merge branch 'gh-pages' of git@github.com:ask/celery

Conflicts:
	index.html
Ask Solem 15 лет назад
Родитель
Сommit
9e838e2dbc
100 измененных файлов с 14036 добавлено и 0 удалено
  1. 713 0
      changelog.html
  2. 122 0
      cookbook/index.html
  3. 164 0
      cookbook/task-retries.html
  4. 413 0
      faq.html
  5. 779 0
      genindex.html
  6. 232 0
      index.html
  7. 471 0
      introduction.html
  8. 170 0
      links.html
  9. 244 0
      modindex.html
  10. 398 0
      objects.inv
  11. 152 0
      reference/celery.backends.amqp.html
  12. 209 0
      reference/celery.backends.base.html
  13. 122 0
      reference/celery.backends.cache.html
  14. 173 0
      reference/celery.backends.database.html
  15. 148 0
      reference/celery.backends.html
  16. 147 0
      reference/celery.backends.tyrant.html
  17. 214 0
      reference/celery.bin.celeryd.html
  18. 115 0
      reference/celery.bin.celeryinit.html
  19. 308 0
      reference/celery.conf.html
  20. 216 0
      reference/celery.datastructures.html
  21. 127 0
      reference/celery.discovery.html
  22. 146 0
      reference/celery.exceptions.html
  23. 265 0
      reference/celery.execute.html
  24. 151 0
      reference/celery.fields.html
  25. 156 0
      reference/celery.loaders.base.html
  26. 138 0
      reference/celery.loaders.default.html
  27. 144 0
      reference/celery.loaders.djangoapp.html
  28. 115 0
      reference/celery.loaders.html
  29. 131 0
      reference/celery.log.html
  30. 265 0
      reference/celery.managers.html
  31. 152 0
      reference/celery.messaging.html
  32. 212 0
      reference/celery.models.html
  33. 311 0
      reference/celery.monitoring.html
  34. 177 0
      reference/celery.platform.html
  35. 263 0
      reference/celery.pool.html
  36. 205 0
      reference/celery.registry.html
  37. 489 0
      reference/celery.result.html
  38. 115 0
      reference/celery.signals.html
  39. 241 0
      reference/celery.supervisor.html
  40. 707 0
      reference/celery.task.base.html
  41. 149 0
      reference/celery.task.builtins.html
  42. 229 0
      reference/celery.task.html
  43. 157 0
      reference/celery.task.strategy.html
  44. 115 0
      reference/celery.timer.html
  45. 192 0
      reference/celery.utils.html
  46. 138 0
      reference/celery.views.html
  47. 196 0
      reference/celery.worker.controllers.html
  48. 295 0
      reference/celery.worker.html
  49. 244 0
      reference/celery.worker.job.html
  50. 161 0
      reference/index.html
  51. 97 0
      search.html
  52. 0 0
      searchindex.js
  53. 519 0
      sources/changelog.txt
  54. 15 0
      sources/cookbook/index.txt
  55. 53 0
      sources/cookbook/task-retries.txt
  56. 321 0
      sources/faq.txt
  57. 29 0
      sources/index.txt
  58. 382 0
      sources/introduction.txt
  59. 55 0
      sources/links.txt
  60. 8 0
      sources/reference/celery.backends.amqp.txt
  61. 10 0
      sources/reference/celery.backends.base.txt
  62. 8 0
      sources/reference/celery.backends.cache.txt
  63. 8 0
      sources/reference/celery.backends.database.txt
  64. 8 0
      sources/reference/celery.backends.txt
  65. 8 0
      sources/reference/celery.backends.tyrant.txt
  66. 8 0
      sources/reference/celery.bin.celeryd.txt
  67. 8 0
      sources/reference/celery.bin.celeryinit.txt
  68. 8 0
      sources/reference/celery.conf.txt
  69. 8 0
      sources/reference/celery.datastructures.txt
  70. 8 0
      sources/reference/celery.discovery.txt
  71. 8 0
      sources/reference/celery.exceptions.txt
  72. 8 0
      sources/reference/celery.execute.txt
  73. 8 0
      sources/reference/celery.fields.txt
  74. 8 0
      sources/reference/celery.loaders.base.txt
  75. 8 0
      sources/reference/celery.loaders.default.txt
  76. 8 0
      sources/reference/celery.loaders.djangoapp.txt
  77. 8 0
      sources/reference/celery.loaders.txt
  78. 8 0
      sources/reference/celery.log.txt
  79. 8 0
      sources/reference/celery.managers.txt
  80. 8 0
      sources/reference/celery.messaging.txt
  81. 76 0
      sources/reference/celery.models.txt
  82. 8 0
      sources/reference/celery.monitoring.txt
  83. 10 0
      sources/reference/celery.platform.txt
  84. 8 0
      sources/reference/celery.pool.txt
  85. 8 0
      sources/reference/celery.registry.txt
  86. 8 0
      sources/reference/celery.result.txt
  87. 8 0
      sources/reference/celery.signals.txt
  88. 8 0
      sources/reference/celery.supervisor.txt
  89. 8 0
      sources/reference/celery.task.base.txt
  90. 8 0
      sources/reference/celery.task.builtins.txt
  91. 8 0
      sources/reference/celery.task.strategy.txt
  92. 8 0
      sources/reference/celery.task.txt
  93. 8 0
      sources/reference/celery.timer.txt
  94. 8 0
      sources/reference/celery.utils.txt
  95. 8 0
      sources/reference/celery.views.txt
  96. 8 0
      sources/reference/celery.worker.controllers.txt
  97. 8 0
      sources/reference/celery.worker.job.txt
  98. 8 0
      sources/reference/celery.worker.txt
  99. 47 0
      sources/reference/index.txt
  100. 238 0
      sources/tutorials/clickcounter.txt

+ 713 - 0
changelog.html

@@ -0,0 +1,713 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Change history &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="static/jquery.js"></script>
+    <script type="text/javascript" src="static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="index.html" />
+    <link rel="next" title="Interesting Links" href="links.html" />
+    <link rel="prev" title="Celery Initialize - celery.bin.celeryinit" href="reference/celery.bin.celeryinit.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="links.html" title="Interesting Links"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="reference/celery.bin.celeryinit.html" title="Celery Initialize - celery.bin.celeryinit"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="change-history">
+<h1>Change history<a class="headerlink" href="#change-history" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="a-m-cet">
+<h2>0.6.0 [2009-08-07 06:54 A.M CET]<a class="headerlink" href="#a-m-cet" title="Permalink to this headline">¶</a></h2>
+<p><strong>IMPORTANT CHANGES</strong></p>
+<ul>
+<li><dl class="first docutils">
+<dt>Fixed a bug where tasks raising unpickleable exceptions crashed pool</dt>
+<dd><p class="first last">workers. So if you&#8217;ve had pool workers mysteriously dissapearing, or
+problems with celeryd stopping working, this has been fixed in this
+version.</p>
+</dd>
+</dl>
+</li>
+<li><p class="first">Fixed a race condition with periodic tasks.</p>
+</li>
+<li><dl class="first docutils">
+<dt>The task pool is now supervised, so if a pool worker crashes,</dt>
+<dd><p class="first last">goes away or stops responding, it is automatically replaced with
+a new one.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>Task.name is now automatically generated out of class module+name, e.g.</dt>
+<dd><p class="first last"><tt class="docutils literal"><span class="pre">&quot;djangotwitter.tasks.UpdateStatusesTask&quot;</span></tt>. Very convenient. No idea why
+we didn&#8217;t do this before. Some documentation is updated to not manually
+specify a task name.</p>
+</dd>
+</dl>
+</li>
+</ul>
+<p><strong>NEWS</strong></p>
+<ul>
+<li><p class="first">Tested with Django 1.1</p>
+</li>
+<li><p class="first">New Tutorial: Creating a click counter using carrot and celery</p>
+</li>
+<li><dl class="first docutils">
+<dt>Database entries for periodic tasks are now created at <tt class="docutils literal"><span class="pre">celeryd</span></tt></dt>
+<dd><p class="first last">startup instead of for each check (which has been a forgotten TODO/XXX
+in the code for a long time)</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>New settings variable: <tt class="docutils literal"><span class="pre">CELERY_TASK_RESULT_EXPIRES</span></tt></dt>
+<dd><p class="first last">Time (in seconds, or a <cite>datetime.timedelta</cite> object) for when after
+stored task results are deleted. For the moment this only works for the
+database backend.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt><tt class="docutils literal"><span class="pre">celeryd</span></tt> now emits a debug log message for which periodic tasks</dt>
+<dd><p class="first last">has been launched.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>The periodic task table is now locked for reading while getting</dt>
+<dd><p class="first last">periodic task status. (MySQL only so far, seeking patches for other
+engines)</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>A lot more debugging information is now available by turning on the</dt>
+<dd><p class="first last"><tt class="docutils literal"><span class="pre">DEBUG</span></tt> loglevel (<tt class="docutils literal"><span class="pre">--loglevel=DEBUG</span></tt>).</p>
+</dd>
+</dl>
+</li>
+<li><p class="first">Functions/methods with a timeout argument now works correctly.</p>
+</li>
+<li><dl class="first docutils">
+<dt>New: <tt class="docutils literal"><span class="pre">celery.strategy.even_time_distribution</span></tt>:</dt>
+<dd><p class="first last">With an iterator yielding task args, kwargs tuples, evenly distribute
+the processing of its tasks throughout the time window available.</p>
+</dd>
+</dl>
+</li>
+<li><p class="first">Log message <tt class="docutils literal"><span class="pre">Unknown</span> <span class="pre">task</span> <span class="pre">ignored...</span></tt> now has loglevel <tt class="docutils literal"><span class="pre">ERROR</span></tt></p>
+</li>
+<li><dl class="first docutils">
+<dt>Log message <tt class="docutils literal"><span class="pre">&quot;Got</span> <span class="pre">task</span> <span class="pre">from</span> <span class="pre">broker&quot;</span></tt> is now emitted for all tasks, even if</dt>
+<dd><p class="first last">the task has an ETA (estimated time of arrival). Also the message now
+includes the ETA for the task (if any).</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>Acknowledgement now happens in the pool callback. Can&#8217;t do ack in the job</dt>
+<dd><p class="first last">target, as it&#8217;s not pickleable (can&#8217;t share AMQP connection, etc)).</p>
+</dd>
+</dl>
+</li>
+<li><p class="first">Added note about .delay hanging in README</p>
+</li>
+<li><p class="first">Tests now passing in Django 1.1</p>
+</li>
+<li><p class="first">Fixed discovery to make sure app is in INSTALLED_APPS</p>
+</li>
+<li><dl class="first docutils">
+<dt>Previously overrided pool behaviour (process reap, wait until pool worker</dt>
+<dd><p class="first last">available, etc.) is now handled by <tt class="docutils literal"><span class="pre">multiprocessing.Pool</span></tt> itself.</p>
+</dd>
+</dl>
+</li>
+<li><p class="first">Convert statistics data to unicode for use as kwargs. Thanks Lucy!</p>
+</li>
+</ul>
+</div>
+<div class="section" id="p-m-cet">
+<h2>0.4.1 [2009-07-02 01:42 P.M CET]<a class="headerlink" href="#p-m-cet" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Fixed a bug with parsing the message options (<tt class="docutils literal"><span class="pre">mandatory</span></tt>,
+<tt class="docutils literal"><span class="pre">routing_key</span></tt>, <tt class="docutils literal"><span class="pre">priority</span></tt>, <tt class="docutils literal"><span class="pre">immediate</span></tt>)</li>
+</ul>
+</div>
+<div class="section" id="id1">
+<h2>0.4.0 [2009-07-01 07:29 P.M CET]<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Adds eager execution. <tt class="docutils literal"><span class="pre">celery.execute.apply``|``Task.apply</span></tt> executes the
+function blocking until the task is done, for API compatiblity it
+returns an <tt class="docutils literal"><span class="pre">celery.result.EagerResult</span></tt> instance. You can configure
+celery to always run tasks locally by setting the
+<tt class="docutils literal"><span class="pre">CELERY_ALWAYS_EAGER</span></tt> setting to <tt class="xref docutils literal"><span class="pre">True</span></tt>.</li>
+<li>Now depends on <tt class="docutils literal"><span class="pre">anyjson</span></tt>.</li>
+<li>99% coverage using python <tt class="docutils literal"><span class="pre">coverage</span></tt> 3.0.</li>
+</ul>
+</div>
+<div class="section" id="id2">
+<h2>0.3.20 [2009-06-25 08:42 P.M CET]<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">New arguments to <tt class="docutils literal"><span class="pre">apply_async</span></tt> (the advanced version of
+<tt class="docutils literal"><span class="pre">delay_task</span></tt>), <tt class="docutils literal"><span class="pre">countdown</span></tt> and <tt class="docutils literal"><span class="pre">eta</span></tt>;</p>
+<blockquote>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="c"># Run 10 seconds into the future.</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">res</span> <span class="o">=</span> <span class="n">apply_async</span><span class="p">(</span><span class="n">MyTask</span><span class="p">,</span> <span class="n">countdown</span><span class="o">=</span><span class="mf">10</span><span class="p">);</span>
+</pre></div>
+</div>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="c"># Run 1 day from now</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">res</span> <span class="o">=</span> <span class="n">apply_async</span><span class="p">(</span><span class="n">MyTask</span><span class="p">,</span> <span class="n">eta</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">+</span>
+<span class="gp">... </span>                                                                    <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mf">1</span><span class="p">)</span>
+</pre></div>
+</div>
+</blockquote>
+</li>
+<li><p class="first">Now unlinks the pidfile if it&#8217;s stale.</p>
+</li>
+<li><p class="first">Lots of more tests.</p>
+</li>
+<li><p class="first">Now compatible with carrot &gt;= 0.5.0.</p>
+</li>
+<li><p class="first"><strong>IMPORTANT</strong> The <tt class="docutils literal"><span class="pre">subtask_ids</span></tt> attribute on the <tt class="docutils literal"><span class="pre">TaskSetResult</span></tt>
+instance has been removed. To get this information instead use:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">subtask_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">subtask</span><span class="o">.</span><span class="n">task_id</span> <span class="k">for</span> <span class="n">subtask</span> <span class="ow">in</span> <span class="n">ts_res</span><span class="o">.</span><span class="n">subtasks</span><span class="p">]</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">Taskset.run()</span></tt> now respects extra message options from the task class.</p>
+</li>
+<li><p class="first">Task: Add attribute <tt class="docutils literal"><span class="pre">ignore_result</span></tt>: Don&#8217;t store the status and
+return value. This means you can&#8217;t use the
+<tt class="docutils literal"><span class="pre">celery.result.AsyncResult</span></tt> to check if the task is
+done, or get its return value. Only use if you need the performance
+and is able live without these features. Any exceptions raised will
+store the return value/status as usual.</p>
+</li>
+<li><p class="first">Task: Add attribute <tt class="docutils literal"><span class="pre">disable_error_emails</span></tt> to disable sending error
+emails for that task.</p>
+</li>
+<li><p class="first">Should now work on Windows (although running in the background won&#8217;t
+work, so using the <tt class="docutils literal"><span class="pre">--detach</span></tt> argument results in an exception
+being raised.)</p>
+</li>
+<li><p class="first">Added support for statistics for profiling and monitoring.
+To start sending statistics start <tt class="docutils literal"><span class="pre">celeryd</span></tt> with the
+<tt class="docutils literal"><span class="pre">--statistics</span></tt> option. Then after a while you can dump the results
+by running <tt class="docutils literal"><span class="pre">python</span> <span class="pre">manage.py</span> <span class="pre">celerystats</span></tt>. See
+<tt class="docutils literal"><span class="pre">celery.monitoring</span></tt> for more information.</p>
+</li>
+<li><p class="first">The celery daemon can now be supervised (i.e it is automatically
+restarted if it crashes). To use this start celeryd with the
+<tt class="docutils literal"><span class="pre">--supervised</span></tt> option (or alternatively <tt class="docutils literal"><span class="pre">-S</span></tt>).</p>
+</li>
+<li><p class="first">views.apply: View applying a task. Example:</p>
+<div class="highlight-python"><pre>http://e.com/celery/apply/task_name/arg1/arg2//?kwarg1=a&amp;kwarg2=b</pre>
+</div>
+<p><strong>NOTE</strong> Use with caution, preferably not make this publicly
+accessible without ensuring your code is safe!</p>
+</li>
+<li><p class="first">Refactored <tt class="docutils literal"><span class="pre">celery.task</span></tt>. It&#8217;s now split into three modules:</p>
+<ul>
+<li><p class="first">celery.task</p>
+<blockquote>
+<p>Contains <tt class="docutils literal"><span class="pre">apply_async</span></tt>, <tt class="docutils literal"><span class="pre">delay_task</span></tt>, <tt class="docutils literal"><span class="pre">discard_all</span></tt>, and task
+shortcuts, plus imports objects from <tt class="docutils literal"><span class="pre">celery.task.base</span></tt> and
+<tt class="docutils literal"><span class="pre">celery.task.builtins</span></tt></p>
+</blockquote>
+</li>
+<li><p class="first">celery.task.base</p>
+<blockquote>
+<p>Contains task base classes: <tt class="docutils literal"><span class="pre">Task</span></tt>, <tt class="docutils literal"><span class="pre">PeriodicTask</span></tt>,
+<tt class="docutils literal"><span class="pre">TaskSet</span></tt>, <tt class="docutils literal"><span class="pre">AsynchronousMapTask</span></tt>, <tt class="docutils literal"><span class="pre">ExecuteRemoteTask</span></tt>.</p>
+</blockquote>
+</li>
+<li><p class="first">celery.task.builtins</p>
+<blockquote>
+<p>Built-in tasks: <tt class="docutils literal"><span class="pre">PingTask</span></tt>, <tt class="docutils literal"><span class="pre">DeleteExpiredTaskMetaTask</span></tt>.</p>
+</blockquote>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="id3">
+<h2>0.3.7 [2008-06-16 11:41 P.M CET]<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first"><strong>IMPORTANT</strong> Now uses AMQP&#8217;s <tt class="docutils literal"><span class="pre">basic.consume</span></tt> instead of
+<tt class="docutils literal"><span class="pre">basic.get</span></tt>. This means we&#8217;re no longer polling the broker for
+new messages.</p>
+</li>
+<li><p class="first"><strong>IMPORTANT</strong> Default concurrency limit is now set to the number of CPUs
+available on the system.</p>
+</li>
+<li><p class="first"><strong>IMPORTANT</strong> <tt class="docutils literal"><span class="pre">tasks.register</span></tt>: Renamed <tt class="docutils literal"><span class="pre">task_name</span></tt> argument to
+<tt class="docutils literal"><span class="pre">name</span></tt>, so</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tasks</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">task_name</span><span class="o">=</span><span class="s">&quot;mytask&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>has to be replaced with:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tasks</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s">&quot;mytask&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">The daemon now correctly runs if the pidlock is stale.</p>
+</li>
+<li><p class="first">Now compatible with carrot 0.4.5</p>
+</li>
+<li><p class="first">Default AMQP connnection timeout is now 4 seconds.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">AsyncResult.read()</span></tt> was always returning <tt class="xref docutils literal"><span class="pre">True</span></tt>.</p>
+</li>
+<li><p class="first">Only use README as long_description if the file exists so easy_install
+doesn&#8217;t break.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">celery.view</span></tt>: JSON responses now properly set its mime-type.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">apply_async</span></tt> now has a <tt class="docutils literal"><span class="pre">connection</span></tt> keyword argument so you
+can re-use the same AMQP connection if you want to execute
+more than one task.</p>
+</li>
+<li><p class="first">Handle failures in task_status view such that it won&#8217;t throw 500s.</p>
+</li>
+<li><p class="first">Fixed typo <tt class="docutils literal"><span class="pre">AMQP_SERVER</span></tt> in documentation to <tt class="docutils literal"><span class="pre">AMQP_HOST</span></tt>.</p>
+</li>
+<li><p class="first">Worker exception e-mails sent to admins now works properly.</p>
+</li>
+<li><p class="first">No longer depends on <tt class="docutils literal"><span class="pre">django</span></tt>, so installing <tt class="docutils literal"><span class="pre">celery</span></tt> won&#8217;t affect
+the preferred Django version installed.</p>
+</li>
+<li><p class="first">Now works with PostgreSQL (psycopg2) again by registering the
+<tt class="docutils literal"><span class="pre">PickledObject</span></tt> field.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">celeryd</span></tt>: Added <tt class="docutils literal"><span class="pre">--detach</span></tt> option as an alias to <tt class="docutils literal"><span class="pre">--daemon</span></tt>, and
+it&#8217;s the term used in the documentation from now on.</p>
+</li>
+<li><p class="first">Make sure the pool and periodic task worker thread is terminated
+properly at exit. (So <tt class="docutils literal"><span class="pre">Ctrl-C</span></tt> works again).</p>
+</li>
+<li><p class="first">Now depends on <tt class="docutils literal"><span class="pre">python-daemon</span></tt>.</p>
+</li>
+<li><p class="first">Removed dependency to <tt class="docutils literal"><span class="pre">simplejson</span></tt></p>
+</li>
+<li><p class="first">Cache Backend: Re-establishes connection for every task process
+if the Django cache backend is memcached/libmemcached.</p>
+</li>
+<li><p class="first">Tyrant Backend: Now re-establishes the connection for every task
+executed.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="id4">
+<h2>0.3.3 [2009-06-08 01:07 P.M CET]<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><dl class="first docutils">
+<dt>The <tt class="docutils literal"><span class="pre">PeriodicWorkController</span></tt> now sleeps for 1 second between checking</dt>
+<dd><p class="first last">for periodic tasks to execute.</p>
+</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="section" id="id5">
+<h2>0.3.2 [2009-06-08 01:07 P.M CET]<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>celeryd: Added option <tt class="docutils literal"><span class="pre">--discard</span></tt>: Discard (delete!) all waiting
+messages in the queue.</li>
+<li>celeryd: The <tt class="docutils literal"><span class="pre">--wakeup-after</span></tt> option was not handled as a float.</li>
+</ul>
+</div>
+<div class="section" id="id6">
+<h2>0.3.1 [2009-06-08 01:07 P.M CET]<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>The <cite>PeriodicTask`</cite> worker is now running in its own thread instead
+of blocking the <tt class="docutils literal"><span class="pre">TaskController</span></tt> loop.</li>
+<li>Default <tt class="docutils literal"><span class="pre">QUEUE_WAKEUP_AFTER</span></tt> has been lowered to <tt class="docutils literal"><span class="pre">0.1</span></tt> (was <tt class="docutils literal"><span class="pre">0.3</span></tt>)</li>
+</ul>
+</div>
+<div class="section" id="id7">
+<h2>0.3.0 [2009-06-08 12:41 P.M CET]<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h2>
+<p><strong>NOTE</strong> This is a development version, for the stable release, please
+see versions 0.2.x.</p>
+<p><strong>VERY IMPORTANT:</strong> Pickle is now the encoder used for serializing task
+arguments, so be sure to flush your task queue before you upgrade.</p>
+<ul>
+<li><p class="first"><strong>IMPORTANT</strong> TaskSet.run() now returns a celery.result.TaskSetResult
+instance, which lets you inspect the status and return values of a
+taskset as it was a single entity.</p>
+</li>
+<li><p class="first"><strong>IMPORTANT</strong> Celery now depends on carrot &gt;= 0.4.1.</p>
+</li>
+<li><p class="first">The celery daemon now sends task errors to the registered admin e-mails.
+To turn off this feature, set <tt class="docutils literal"><span class="pre">SEND_CELERY_TASK_ERROR_EMAILS</span></tt> to
+<tt class="xref docutils literal"><span class="pre">False</span></tt> in your <tt class="docutils literal"><span class="pre">settings.py</span></tt>. Thanks to Grégoire Cachet.</p>
+</li>
+<li><p class="first">You can now run the celery daemon by using <tt class="docutils literal"><span class="pre">manage.py</span></tt>:</p>
+<div class="highlight-python"><pre>$ python manage.py celeryd</pre>
+</div>
+<p>Thanks to Grégoire Cachet.</p>
+</li>
+<li><p class="first">Added support for message priorities, topic exchanges, custom routing
+keys for tasks. This means we have introduced
+<tt class="docutils literal"><span class="pre">celery.task.apply_async</span></tt>, a new way of executing tasks.</p>
+<p>You can use <tt class="docutils literal"><span class="pre">celery.task.delay</span></tt> and <tt class="docutils literal"><span class="pre">celery.Task.delay</span></tt> like usual, but
+if you want greater control over the message sent, you want
+<tt class="docutils literal"><span class="pre">celery.task.apply_async</span></tt> and <tt class="docutils literal"><span class="pre">celery.Task.apply_async</span></tt>.</p>
+<p>This also means the AMQP configuration has changed. Some settings has
+been renamed, while others are new:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">CELERY_AMQP_EXCHANGE</span>
+<span class="n">CELERY_AMQP_PUBLISHER_ROUTING_KEY</span>
+<span class="n">CELERY_AMQP_CONSUMER_ROUTING_KEY</span>
+<span class="n">CELERY_AMQP_CONSUMER_QUEUE</span>
+<span class="n">CELERY_AMQP_EXCHANGE_TYPE</span>
+</pre></div>
+</div>
+<p>See the entry <a class="reference external" href="http://bit.ly/celery_AMQP_routing">Can I send some tasks to only some servers?</a> in the
+<a class="reference external" href="http://ask.github.com/celery/faq.html">FAQ</a> for more information.</p>
+</li>
+</ul>
+<ul class="simple">
+<li>Task errors are now logged using loglevel <tt class="docutils literal"><span class="pre">ERROR</span></tt> instead of <tt class="docutils literal"><span class="pre">INFO</span></tt>,
+and backtraces are dumped. Thanks to Grégoire Cachet.</li>
+<li>Make every new worker process re-establish it&#8217;s Django DB connection,
+this solving the &#8220;MySQL connection died?&#8221; exceptions.
+Thanks to Vitaly Babiy and Jirka Vejrazka.</li>
+<li><strong>IMOPORTANT</strong> Now using pickle to encode task arguments. This means you
+now can pass complex python objects to tasks as arguments.</li>
+<li>Removed dependency to <tt class="docutils literal"><span class="pre">yadayada</span></tt>.</li>
+<li>Added a FAQ, see <tt class="docutils literal"><span class="pre">docs/faq.rst</span></tt>.</li>
+<li>Now converts any unicode keys in task <tt class="docutils literal"><span class="pre">kwargs</span></tt> to regular strings.
+Thanks Vitaly Babiy.</li>
+<li>Renamed the <tt class="docutils literal"><span class="pre">TaskDaemon</span></tt> to <tt class="docutils literal"><span class="pre">WorkController</span></tt>.</li>
+<li><tt class="docutils literal"><span class="pre">celery.datastructures.TaskProcessQueue</span></tt> is now renamed to
+<tt class="docutils literal"><span class="pre">celery.pool.TaskPool</span></tt>.</li>
+<li>The pool algorithm has been refactored for greater performance and
+stability.</li>
+</ul>
+</div>
+<div class="section" id="id8">
+<h2>0.2.0 [2009-05-20 05:14 P.M CET]<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Final release of 0.2.0</li>
+<li>Compatible with carrot version 0.4.0.</li>
+<li>Fixes some syntax errors related to fetching results
+from the database backend.</li>
+</ul>
+</div>
+<div class="section" id="pre3-2009-05-20-05-14-p-m-cet">
+<h2>0.2.0-pre3 [2009-05-20 05:14 P.M CET]<a class="headerlink" href="#pre3-2009-05-20-05-14-p-m-cet" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><em>Internal release</em>. Improved handling of unpickled exceptions,
+<tt class="docutils literal"><span class="pre">get_result</span></tt> now tries to recreate something looking like the
+original exception.</li>
+</ul>
+</div>
+<div class="section" id="pre2-2009-05-20-01-56-p-m-cet">
+<h2>0.2.0-pre2 [2009-05-20 01:56 P.M CET]<a class="headerlink" href="#pre2-2009-05-20-01-56-p-m-cet" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Now handles unpickleable exceptions (like the dynimically generated
+subclasses of <tt class="docutils literal"><span class="pre">django.core.exception.MultipleObjectsReturned</span></tt>).</li>
+</ul>
+</div>
+<div class="section" id="pre1-2009-05-20-12-33-p-m-cet">
+<h2>0.2.0-pre1 [2009-05-20 12:33 P.M CET]<a class="headerlink" href="#pre1-2009-05-20-12-33-p-m-cet" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>It&#8217;s getting quite stable, with a lot of new features, so bump
+version to 0.2. This is a pre-release.</li>
+<li><tt class="docutils literal"><span class="pre">celery.task.mark_as_read()</span></tt> and <tt class="docutils literal"><span class="pre">celery.task.mark_as_failure()</span></tt> has
+been removed. Use <tt class="docutils literal"><span class="pre">celery.backends.default_backend.mark_as_read()</span></tt>,
+and <tt class="docutils literal"><span class="pre">celery.backends.default_backend.mark_as_failure()</span></tt> instead.</li>
+</ul>
+</div>
+<div class="section" id="id9">
+<h2>0.1.15 [2009-05-19 04:13 P.M CET]<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>The celery daemon was leaking AMQP connections, this should be fixed,
+if you have any problems with too many files open (like <tt class="docutils literal"><span class="pre">emfile</span></tt>
+errors in <tt class="docutils literal"><span class="pre">rabbit.log</span></tt>, please contact us!</li>
+</ul>
+</div>
+<div class="section" id="id10">
+<h2>0.1.14 [2009-05-19 01:08 P.M CET]<a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Fixed a syntax error in the <tt class="docutils literal"><span class="pre">TaskSet</span></tt> class.  (No such variable
+<tt class="docutils literal"><span class="pre">TimeOutError</span></tt>).</li>
+</ul>
+</div>
+<div class="section" id="id11">
+<h2>0.1.13 [2009-05-19 12:36 P.M CET]<a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">Forgot to add <tt class="docutils literal"><span class="pre">yadayada</span></tt> to install requirements.</p>
+</li>
+<li><p class="first">Now deletes all expired task results, not just those marked as done.</p>
+</li>
+<li><p class="first">Able to load the Tokyo Tyrant backend class without django
+configuration, can specify tyrant settings directly in the class
+constructor.</p>
+</li>
+<li><p class="first">Improved API documentation</p>
+</li>
+<li><p class="first">Now using the Sphinx documentation system, you can build
+the html documentation by doing</p>
+<div class="highlight-python"><pre>$ cd docs
+$ make html</pre>
+</div>
+<p>and the result will be in <tt class="docutils literal"><span class="pre">docs/.build/html</span></tt>.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="id12">
+<h2>0.1.12 [2009-05-18 04:38 P.M CET]<a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first"><tt class="docutils literal"><span class="pre">delay_task()</span></tt> etc. now returns <tt class="docutils literal"><span class="pre">celery.task.AsyncResult</span></tt> object,
+which lets you check the result and any failure that might have
+happened.  It kind of works like the <tt class="docutils literal"><span class="pre">multiprocessing.AsyncResult</span></tt>
+class returned by <tt class="docutils literal"><span class="pre">multiprocessing.Pool.map_async</span></tt>.</p>
+</li>
+<li><p class="first">Added dmap() and dmap_async(). This works like the
+<tt class="docutils literal"><span class="pre">multiprocessing.Pool</span></tt> versions except they are tasks
+distributed to the celery server. Example:</p>
+<blockquote>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">dmap</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">operator</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">dmap</span><span class="p">(</span><span class="n">operator</span><span class="o">.</span><span class="n">add</span><span class="p">,</span> <span class="p">[[</span><span class="mf">2</span><span class="p">,</span> <span class="mf">2</span><span class="p">],</span> <span class="p">[</span><span class="mf">4</span><span class="p">,</span> <span class="mf">4</span><span class="p">],</span> <span class="p">[</span><span class="mf">8</span><span class="p">,</span> <span class="mf">8</span><span class="p">]])</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span><span class="mf">4</span><span class="p">,</span> <span class="mf">8</span><span class="p">,</span> <span class="mf">16</span><span class="p">]</span>
+</pre></div>
+</div>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">dmap_async</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">operator</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">dmap_async</span><span class="p">(</span><span class="n">operator</span><span class="o">.</span><span class="n">add</span><span class="p">,</span> <span class="p">[[</span><span class="mf">2</span><span class="p">,</span> <span class="mf">2</span><span class="p">],</span> <span class="p">[</span><span class="mf">4</span><span class="p">,</span> <span class="mf">4</span><span class="p">],</span> <span class="p">[</span><span class="mf">8</span><span class="p">,</span> <span class="mf">8</span><span class="p">]])</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">ready</span><span class="p">()</span>
+<span class="go">False</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">ready</span><span class="p">()</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">result</span>
+<span class="go">[4, 8, 16]</span>
+</pre></div>
+</div>
+</blockquote>
+</li>
+<li><p class="first">Refactored the task metadata cache and database backends, and added
+a new backend for Tokyo Tyrant. You can set the backend in your django
+settings file. e.g:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">CELERY_BACKEND</span> <span class="o">=</span> <span class="s">&quot;database&quot;</span><span class="p">;</span> <span class="c"># Uses the database</span>
+<span class="n">CELERY_BACKEND</span> <span class="o">=</span> <span class="s">&quot;cache&quot;</span><span class="p">;</span> <span class="c"># Uses the django cache framework</span>
+<span class="n">CELERY_BACKEND</span> <span class="o">=</span> <span class="s">&quot;tyrant&quot;</span><span class="p">;</span> <span class="c"># Uses Tokyo Tyrant</span>
+<span class="n">TT_HOST</span> <span class="o">=</span> <span class="s">&quot;localhost&quot;</span><span class="p">;</span> <span class="c"># Hostname for the Tokyo Tyrant server.</span>
+<span class="n">TT_PORT</span> <span class="o">=</span> <span class="mf">6657</span><span class="p">;</span> <span class="c"># Port of the Tokyo Tyrant server.</span>
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+<div class="section" id="id13">
+<h2>0.1.11 [2009-05-12 02:08 P.M CET]<a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>The logging system was leaking file descriptors, resulting in
+servers stopping with the EMFILES (too many open files) error. (fixed)</li>
+</ul>
+</div>
+<div class="section" id="id14">
+<h2>0.1.10 [2009-05-11 12:46 P.M CET]<a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Tasks now supports both positional arguments and keyword arguments.</li>
+<li>Requires carrot 0.3.8.</li>
+<li>The daemon now tries to reconnect if the connection is lost.</li>
+</ul>
+</div>
+<div class="section" id="id15">
+<h2>0.1.8 [2009-05-07 12:27 P.M CET]<a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Better test coverage</li>
+<li>More documentation</li>
+<li>celeryd doesn&#8217;t emit <tt class="docutils literal"><span class="pre">Queue</span> <span class="pre">is</span> <span class="pre">empty</span></tt> message if
+<tt class="docutils literal"><span class="pre">settings.CELERYD_EMPTY_MSG_EMIT_EVERY</span></tt> is 0.</li>
+</ul>
+</div>
+<div class="section" id="id16">
+<h2>0.1.7 [2009-04-30 1:50 P.M CET]<a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Added some unittests</li>
+<li>Can now use the database for task metadata (like if the task has
+been executed or not). Set <tt class="docutils literal"><span class="pre">settings.CELERY_TASK_META</span></tt></li>
+<li>Can now run <tt class="docutils literal"><span class="pre">python</span> <span class="pre">setup.py</span> <span class="pre">test</span></tt> to run the unittests from
+within the <tt class="docutils literal"><span class="pre">testproj</span></tt> project.</li>
+<li>Can set the AMQP exchange/routing key/queue using
+<tt class="docutils literal"><span class="pre">settings.CELERY_AMQP_EXCHANGE</span></tt>, <tt class="docutils literal"><span class="pre">settings.CELERY_AMQP_ROUTING_KEY</span></tt>,
+and <tt class="docutils literal"><span class="pre">settings.CELERY_AMQP_CONSUMER_QUEUE</span></tt>.</li>
+</ul>
+</div>
+<div class="section" id="id17">
+<h2>0.1.6 [2009-04-28 2:13 P.M CET]<a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">Introducing <tt class="docutils literal"><span class="pre">TaskSet</span></tt>. A set of subtasks is executed and you can
+find out how many, or if all them, are done (excellent for progress
+bars and such)</p>
+</li>
+<li><p class="first">Now catches all exceptions when running <tt class="docutils literal"><span class="pre">Task.__call__</span></tt>, so the
+daemon doesn&#8217;t die. This does&#8217;t happen for pure functions yet, only
+<tt class="docutils literal"><span class="pre">Task</span></tt> classes.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">autodiscover()</span></tt> now works with zipped eggs.</p>
+</li>
+<li><p class="first">celeryd: Now adds curernt working directory to <tt class="docutils literal"><span class="pre">sys.path</span></tt> for
+convenience.</p>
+</li>
+<li><p class="first">The <tt class="docutils literal"><span class="pre">run_every</span></tt> attribute of <tt class="docutils literal"><span class="pre">PeriodicTask</span></tt> classes can now be a
+<tt class="docutils literal"><span class="pre">datetime.timedelta()</span></tt> object.</p>
+</li>
+<li><p class="first">celeryd: You can now set the <tt class="docutils literal"><span class="pre">DJANGO_PROJECT_DIR</span></tt> variable
+for <tt class="docutils literal"><span class="pre">celeryd</span></tt> and it will add that to <tt class="docutils literal"><span class="pre">sys.path</span></tt> for easy launching.</p>
+</li>
+<li><p class="first">Can now check if a task has been executed or not via HTTP.</p>
+</li>
+<li><p class="first">You can do this by including the celery <tt class="docutils literal"><span class="pre">urls.py</span></tt> into your project,</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">url</span><span class="p">(</span><span class="s">r&#39;^celery/$&#39;</span><span class="p">,</span> <span class="n">include</span><span class="p">(</span><span class="s">&quot;celery.urls&quot;</span><span class="p">))</span>
+</pre></div>
+</div>
+<p>then visiting the following url,:</p>
+<div class="highlight-python"><pre>http://mysite/celery/$task_id/done/</pre>
+</div>
+<p>this will return a JSON dictionary like e.g:</p>
+<div class="highlight-python"><pre>&gt;&gt;&gt; {"task": {"id": $task_id, "executed": true}}</pre>
+</div>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">delay_task</span></tt> now returns string id, not <tt class="docutils literal"><span class="pre">uuid.UUID</span></tt> instance.</p>
+</li>
+<li><p class="first">Now has <tt class="docutils literal"><span class="pre">PeriodicTasks</span></tt>, to have <tt class="docutils literal"><span class="pre">cron</span></tt> like functionality.</p>
+</li>
+<li><p class="first">Project changed name from <tt class="docutils literal"><span class="pre">crunchy</span></tt> to <tt class="docutils literal"><span class="pre">celery</span></tt>. The details of
+the name change request is in <tt class="docutils literal"><span class="pre">docs/name_change_request.txt</span></tt>.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="id18">
+<h2>0.1.0 [2009-04-24 11:28 A.M CET]<a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Initial release</li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h3><a href="index.html">Table Of Contents</a></h3>
+            <ul>
+<li><a class="reference external" href="">Change history</a><ul>
+<li><a class="reference external" href="#a-m-cet">0.6.0 [2009-08-07 06:54 A.M CET]</a></li>
+<li><a class="reference external" href="#p-m-cet">0.4.1 [2009-07-02 01:42 P.M CET]</a></li>
+<li><a class="reference external" href="#id1">0.4.0 [2009-07-01 07:29 P.M CET]</a></li>
+<li><a class="reference external" href="#id2">0.3.20 [2009-06-25 08:42 P.M CET]</a></li>
+<li><a class="reference external" href="#id3">0.3.7 [2008-06-16 11:41 P.M CET]</a></li>
+<li><a class="reference external" href="#id4">0.3.3 [2009-06-08 01:07 P.M CET]</a></li>
+<li><a class="reference external" href="#id5">0.3.2 [2009-06-08 01:07 P.M CET]</a></li>
+<li><a class="reference external" href="#id6">0.3.1 [2009-06-08 01:07 P.M CET]</a></li>
+<li><a class="reference external" href="#id7">0.3.0 [2009-06-08 12:41 P.M CET]</a></li>
+<li><a class="reference external" href="#id8">0.2.0 [2009-05-20 05:14 P.M CET]</a></li>
+<li><a class="reference external" href="#pre3-2009-05-20-05-14-p-m-cet">0.2.0-pre3 [2009-05-20 05:14 P.M CET]</a></li>
+<li><a class="reference external" href="#pre2-2009-05-20-01-56-p-m-cet">0.2.0-pre2 [2009-05-20 01:56 P.M CET]</a></li>
+<li><a class="reference external" href="#pre1-2009-05-20-12-33-p-m-cet">0.2.0-pre1 [2009-05-20 12:33 P.M CET]</a></li>
+<li><a class="reference external" href="#id9">0.1.15 [2009-05-19 04:13 P.M CET]</a></li>
+<li><a class="reference external" href="#id10">0.1.14 [2009-05-19 01:08 P.M CET]</a></li>
+<li><a class="reference external" href="#id11">0.1.13 [2009-05-19 12:36 P.M CET]</a></li>
+<li><a class="reference external" href="#id12">0.1.12 [2009-05-18 04:38 P.M CET]</a></li>
+<li><a class="reference external" href="#id13">0.1.11 [2009-05-12 02:08 P.M CET]</a></li>
+<li><a class="reference external" href="#id14">0.1.10 [2009-05-11 12:46 P.M CET]</a></li>
+<li><a class="reference external" href="#id15">0.1.8 [2009-05-07 12:27 P.M CET]</a></li>
+<li><a class="reference external" href="#id16">0.1.7 [2009-04-30 1:50 P.M CET]</a></li>
+<li><a class="reference external" href="#id17">0.1.6 [2009-04-28 2:13 P.M CET]</a></li>
+<li><a class="reference external" href="#id18">0.1.0 [2009-04-24 11:28 A.M CET]</a></li>
+</ul>
+</li>
+</ul>
+
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="reference/celery.bin.celeryinit.html"
+                                  title="previous chapter">Celery Initialize - celery.bin.celeryinit</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="links.html"
+                                  title="next chapter">Interesting Links</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="sources/changelog.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="links.html" title="Interesting Links"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="reference/celery.bin.celeryinit.html" title="Celery Initialize - celery.bin.celeryinit"
+             >previous</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 122 - 0
cookbook/index.html

@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Cookbook &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="next" title="Retrying Tasks" href="task-retries.html" />
+    <link rel="prev" title="celery - Distributed Task Queue for Django/Python" href="../introduction.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="task-retries.html" title="Retrying Tasks"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="../introduction.html" title="celery - Distributed Task Queue for Django/Python"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="cookbook">
+<h1>Cookbook<a class="headerlink" href="#cookbook" title="Permalink to this headline">¶</a></h1>
+<ul>
+<li class="toctree-l1"><a class="reference external" href="task-retries.html">Retrying Tasks</a><ul>
+<li class="toctree-l2"><a class="reference external" href="task-retries.html#retrying-a-task-if-something-fails">Retrying a task if something fails</a></li>
+<li class="toctree-l2"><a class="reference external" href="task-retries.html#setting-a-custom-delay-for-retries">Setting a custom delay for retries.</a></li>
+</ul>
+</li>
+</ul>
+<p>This page contains common recipes and techniques.
+Whenever a setting is mentioned, you should use <tt class="docutils literal"><span class="pre">celeryconf.py</span></tt> if using
+regular Python, or <tt class="docutils literal"><span class="pre">settings.py</span></tt> if running under Django.</p>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="../introduction.html"
+                                  title="previous chapter">celery - Distributed Task Queue for Django/Python</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="task-retries.html"
+                                  title="next chapter">Retrying Tasks</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/cookbook/index.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="task-retries.html" title="Retrying Tasks"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="../introduction.html" title="celery - Distributed Task Queue for Django/Python"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 164 - 0
cookbook/task-retries.html

@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Retrying Tasks &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Cookbook" href="index.html" />
+    <link rel="next" title="Tutorials" href="../tutorials/index.html" />
+    <link rel="prev" title="Cookbook" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="../tutorials/index.html" title="Tutorials"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Cookbook"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Cookbook</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="retrying-tasks">
+<h1>Retrying Tasks<a class="headerlink" href="#retrying-tasks" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="retrying-a-task-if-something-fails">
+<h2>Retrying a task if something fails<a class="headerlink" href="#retrying-a-task-if-something-fails" title="Permalink to this headline">¶</a></h2>
+<p>Simply use <a title="celery.task.base.Task.retry" class="reference external" href="../reference/celery.task.base.html#celery.task.base.Task.retry"><tt class="xref docutils literal"><span class="pre">celery.task.base.Task.retry()</span></tt></a> to re-sent the task, it will
+do the right thing, and respect the <a title="celery.task.base.Task.max_retries" class="reference external" href="../reference/celery.task.base.html#celery.task.base.Task.max_retries"><tt class="xref docutils literal"><span class="pre">celery.task.base.Task.max_retries</span></tt></a>
+attribute.</p>
+<div class="highlight-python"><pre>class SendTwitterStatusTask(Task):
+
+    def run(self, oauth, tweet, \*\*kwargs):
+        try:
+            twitter = Twitter(oauth)
+            twitter.update_status(tweet)
+        except (Twitter.FailWhaleError, Twitter.LoginError), exc:
+            self.retry(args=[oauth, tweet], kwargs=\*\*kwargs, exc=exc)</pre>
+</div>
+<p>Here we used the <tt class="docutils literal"><span class="pre">exc</span></tt> argument to pass the current exception to
+<a title="celery.task.base.Task.retry" class="reference external" href="../reference/celery.task.base.html#celery.task.base.Task.retry"><tt class="xref docutils literal"><span class="pre">celery.task.base.Task.retry()</span></tt></a>. At each step of the retry this exception
+is available as the tombstone (result) of the task, when
+<a title="celery.task.base.Task.max_retries" class="reference external" href="../reference/celery.task.base.html#celery.task.base.Task.max_retries"><tt class="xref docutils literal"><span class="pre">celery.task.base.Task.max_retries</span></tt></a> has been exceeded this is the exception
+raised. However, if an <tt class="docutils literal"><span class="pre">exc</span></tt> argument is not provided the
+<tt class="xref docutils literal"><span class="pre">celery.task.base.RetryTaskError</span></tt> exception is raised instead.</p>
+</div>
+<div class="section" id="setting-a-custom-delay-for-retries">
+<h2>Setting a custom delay for retries.<a class="headerlink" href="#setting-a-custom-delay-for-retries" title="Permalink to this headline">¶</a></h2>
+<p>The default countdown is in the tasks
+<a title="celery.task.base.Task.default_retry_delay" class="reference external" href="../reference/celery.task.base.html#celery.task.base.Task.default_retry_delay"><tt class="xref docutils literal"><span class="pre">celery.task.base.Task.default_retry_delay</span></tt></a> attribute, which by
+default is set to 3 minutes.</p>
+<p>You can also provide the <tt class="docutils literal"><span class="pre">countdown</span></tt> argument to
+<a title="celery.task.base.Task.retry" class="reference external" href="../reference/celery.task.base.html#celery.task.base.Task.retry"><tt class="xref docutils literal"><span class="pre">celery.task.base.Task.retry()</span></tt></a> to override this default.</p>
+<div class="highlight-python"><pre>class MyTask(Task):
+    default_retry_delay = 30 * 60 # retry in 30 minutes
+
+    def run(self, x, y, \*\*kwargs):
+        try:
+            ...
+        except Exception, exc:
+            self.retry([x, y], \*\*kwargs, exc=exc,
+                       countdown=60 # override the default and
+                                    # retry in 1 minute</pre>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h3><a href="../index.html">Table Of Contents</a></h3>
+            <ul>
+<li><a class="reference external" href="">Retrying Tasks</a><ul>
+<li><a class="reference external" href="#retrying-a-task-if-something-fails">Retrying a task if something fails</a></li>
+<li><a class="reference external" href="#setting-a-custom-delay-for-retries">Setting a custom delay for retries.</a></li>
+</ul>
+</li>
+</ul>
+
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="index.html"
+                                  title="previous chapter">Cookbook</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="../tutorials/index.html"
+                                  title="next chapter">Tutorials</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/cookbook/task-retries.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="../tutorials/index.html" title="Tutorials"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Cookbook"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Cookbook</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 413 - 0
faq.html

@@ -0,0 +1,413 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Frequently Asked Questions &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="static/jquery.js"></script>
+    <script type="text/javascript" src="static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="index.html" />
+    <link rel="next" title="Module API Reference" href="reference/index.html" />
+    <link rel="prev" title="Tutorial: Creating a click counter using carrot and celery" href="tutorials/clickcounter.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="reference/index.html" title="Module API Reference"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="tutorials/clickcounter.html" title="Tutorial: Creating a click counter using carrot and celery"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="frequently-asked-questions">
+<h1>Frequently Asked Questions<a class="headerlink" href="#frequently-asked-questions" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="mysql-is-throwing-deadlock-errors-what-can-i-do">
+<h2>MySQL is throwing deadlock errors, what can I do?<a class="headerlink" href="#mysql-is-throwing-deadlock-errors-what-can-i-do" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer:</strong> MySQL has default isolation level set to <tt class="docutils literal"><span class="pre">REPEATABLE-READ</span></tt>,
+if you don&#8217;t really need that, set it to <tt class="docutils literal"><span class="pre">READ-COMMITTED</span></tt>.
+You can do that by adding the following to your <tt class="docutils literal"><span class="pre">my.cnf</span></tt>:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="p">[</span><span class="n">mysqld</span><span class="p">]</span>
+<span class="n">transaction</span><span class="o">-</span><span class="n">isolation</span> <span class="o">=</span> <span class="n">READ</span><span class="o">-</span><span class="n">COMMITTED</span>
+</pre></div>
+</div>
+<p>For more information about InnoDBs transaction model see <a class="reference external" href="http://dev.mysql.com/doc/refman/5.1/en/innodb-transaction-model.html">MySQL - The InnoDB
+Transaction Model and Locking</a> in the MySQL user manual.</p>
+<p>(Thanks to Honza Kral and Anton Tsigularov for this solution)</p>
+</div>
+<div class="section" id="celeryd-is-not-doing-anything-just-hanging">
+<h2>celeryd is not doing anything, just hanging<a class="headerlink" href="#celeryd-is-not-doing-anything-just-hanging" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils">
+<dt><strong>Answer:</strong> See <a class="reference internal" href="#mysql-is-throwing-deadlock-errors-what-can-i-do">MySQL is throwing deadlock errors, what can I do?</a>.</dt>
+<dd>or <cite>Why is Task.delay/apply* just hanging?</cite>.</dd>
+</dl>
+</div>
+<div class="section" id="why-is-task-delay-apply-just-hanging">
+<h2>Why is Task.delay/apply* just hanging?`<a class="headerlink" href="#why-is-task-delay-apply-just-hanging" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer:</strong> <tt class="xref docutils literal"><span class="pre">amqplib</span></tt> hangs if it isn&#8217;t able to authenticate to the
+AMQP server, so make sure you are able to access the configured vhost using
+the user and password.</p>
+</div>
+<div class="section" id="why-won-t-celeryd-run-on-freebsd">
+<h2>Why won&#8217;t celeryd run on FreeBSD?<a class="headerlink" href="#why-won-t-celeryd-run-on-freebsd" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer:</strong> multiprocessing.Pool requires a working POSIX semaphore
+implementation which isn&#8217;t enabled in FreeBSD by default. You have to enable
+POSIX semaphores in the kernel and manually recompile multiprocessing.</p>
+</div>
+<div class="section" id="i-m-having-integrityerror-duplicate-key-errors-why">
+<h2>I&#8217;m having <tt class="docutils literal"><span class="pre">IntegrityError:</span> <span class="pre">Duplicate</span> <span class="pre">Key</span></tt> errors. Why?<a class="headerlink" href="#i-m-having-integrityerror-duplicate-key-errors-why" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer:</strong> See <a class="reference internal" href="#mysql-is-throwing-deadlock-errors-what-can-i-do">MySQL is throwing deadlock errors, what can I do?</a>.
+Thanks to howsthedotcom.</p>
+</div>
+<div class="section" id="why-won-t-my-task-run">
+<h2>Why won&#8217;t my Task run?<a class="headerlink" href="#why-won-t-my-task-run" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer:</strong> Did you register the task in the applications <tt class="docutils literal"><span class="pre">tasks.py</span></tt> module?
+(or in some other module Django loads by default, like <tt class="docutils literal"><span class="pre">models.py</span></tt>?).
+Also there might be syntax errors preventing the tasks module being imported.</p>
+<p>You can find out if the celery daemon is able to run the task by executing the
+task manually:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">myapp.tasks</span> <span class="kn">import</span> <span class="n">MyPeriodicTask</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">MyPeriodicTask</span><span class="o">.</span><span class="n">delay</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>Watch celery daemons logfile (or output if not running as a daemon), to see
+if it&#8217;s able to find the task, or if some other error is happening.</p>
+</div>
+<div class="section" id="why-won-t-my-periodic-task-run">
+<h2>Why won&#8217;t my Periodic Task run?<a class="headerlink" href="#why-won-t-my-periodic-task-run" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer:</strong> See <a class="reference internal" href="#why-won-t-my-task-run">Why won&#8217;t my Task run?</a>.</p>
+</div>
+<div class="section" id="how-do-i-discard-all-waiting-tasks">
+<h2>How do I discard all waiting tasks?<a class="headerlink" href="#how-do-i-discard-all-waiting-tasks" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer:</strong> Use <tt class="docutils literal"><span class="pre">celery.task.discard_all()</span></tt>, like this:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">discard_all</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">discard_all</span><span class="p">()</span>
+<span class="go">1753</span>
+</pre></div>
+</div>
+<p>The number <tt class="docutils literal"><span class="pre">1753</span></tt> is the number of messages deleted.</p>
+<p>You can also start celeryd with the <tt class="docutils literal"><span class="pre">--discard</span></tt> argument which will
+accomplish the same thing.</p>
+</div>
+<div class="section" id="i-ve-discarded-messages-but-there-are-still-messages-left-in-the-queue">
+<h2>I&#8217;ve discarded messages, but there are still messages left in the queue?<a class="headerlink" href="#i-ve-discarded-messages-but-there-are-still-messages-left-in-the-queue" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer:</strong> Tasks are acknowledged (removed from the queue) as soon
+as they are actually executed. After the worker has received a task, it will
+take some time until it is actually executed, especially if there are a lot
+of tasks already waiting for execution. Messages that are not acknowledged are
+hold on to by the worker until it closes the connection to the broker (AMQP
+server). When that connection is closed (e.g because the worker was stopped)
+the tasks will be re-sent by the broker to the next available worker (or the
+same worker when it has been restarted), so to properly purge the queue of
+waiting tasks you have to stop all the workers, and then discard the tasks
+using <tt class="docutils literal"><span class="pre">discard_all</span></tt>.</p>
+</div>
+<div class="section" id="can-i-use-celery-with-activemq-stomp">
+<h2>Can I use celery with ActiveMQ/STOMP?<a class="headerlink" href="#can-i-use-celery-with-activemq-stomp" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer</strong>: Yes. But this is somewhat experimental for now.
+It is certainly working ok for me in a test configuration, but it has not
+been tested in production like RabbitMQ. If you have any problems with
+using STOMP and celery, please report the bugs to the issue tracker:</p>
+<blockquote>
+<a class="reference external" href="http://github.com/ask/celery/issues/">http://github.com/ask/celery/issues/</a></blockquote>
+<p>First you have to use the <tt class="docutils literal"><span class="pre">master</span></tt> branch of <tt class="docutils literal"><span class="pre">celery</span></tt>:</p>
+<div class="highlight-python"><pre>$ git clone git://github.com/ask/celery.git
+$ cd celery
+$ sudo python setup.py install
+$ cd ..</pre>
+</div>
+<p>Then you need to install the <tt class="docutils literal"><span class="pre">stompbackend</span></tt> branch of <tt class="docutils literal"><span class="pre">carrot</span></tt>:</p>
+<div class="highlight-python"><pre>$ git clone git://github.com/ask/carrot.git
+$ cd carrot
+$ git checkout stompbackend
+$ sudo python setup.py install
+$ cd ..</pre>
+</div>
+<p>And my fork of <tt class="docutils literal"><span class="pre">python-stomp</span></tt> which adds non-blocking support:</p>
+<div class="highlight-python"><pre>$ hg clone http://bitbucket.org/asksol/python-stomp/
+$ cd python-stomp
+$ sudo python setup.py install
+$ cd ..</pre>
+</div>
+<p>In this example we will use a queue called <tt class="docutils literal"><span class="pre">celery</span></tt> which we created in
+the ActiveMQ web admin interface.</p>
+<p><strong>Note</strong>: For ActiveMQ the queue name has to have <tt class="docutils literal"><span class="pre">&quot;/queue/&quot;</span></tt> prepended to
+it. i.e. the queue <tt class="docutils literal"><span class="pre">celery</span></tt> becomes <tt class="docutils literal"><span class="pre">/queue/celery</span></tt>.</p>
+<p>Since a STOMP queue is a single named entity and it doesn&#8217;t have the
+routing capabilities of AMQP you need to set both the <tt class="docutils literal"><span class="pre">queue</span></tt>, and
+<tt class="docutils literal"><span class="pre">exchange</span></tt> settings to your queue name. This is a minor inconvenience since
+carrot needs to maintain the same interface for both AMQP and STOMP (obviously
+the one with the most capabilities won).</p>
+<p>Use the following specific settings in your <tt class="docutils literal"><span class="pre">settings.py</span></tt>:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="c"># Makes python-stomp the default backend for carrot.</span>
+<span class="n">CARROT_BACKEND</span> <span class="o">=</span> <span class="s">&quot;stomp&quot;</span>
+
+<span class="c"># STOMP hostname and port settings.</span>
+<span class="n">AMQP_HOST</span> <span class="o">=</span> <span class="s">&quot;localhost&quot;</span>
+<span class="n">AMQP_PORT</span> <span class="o">=</span> <span class="mf">61613</span>
+
+<span class="c"># The queue name to use (both queue and exchange must be set to the</span>
+<span class="c"># same queue name when using STOMP)</span>
+<span class="n">CELERY_AMQP_CONSUMER_QUEUE</span> <span class="o">=</span> <span class="s">&quot;/queue/celery&quot;</span>
+<span class="n">CELERY_AMQP_EXCHANGE</span> <span class="o">=</span> <span class="s">&quot;/queue/celery&quot;</span>
+</pre></div>
+</div>
+<p>Now you can go on reading the tutorial in the README, ignoring any AMQP
+specific options.</p>
+</div>
+<div class="section" id="which-features-are-not-supported-when-using-stomp">
+<h2>Which features are not supported when using STOMP?<a class="headerlink" href="#which-features-are-not-supported-when-using-stomp" title="Permalink to this headline">¶</a></h2>
+<p>This is a (possible incomplete) list of features not available when
+using the STOMP backend:</p>
+<ul class="simple">
+<li>routing keys</li>
+<li>exchange types (direct, topic, headers, etc)</li>
+<li>immediate</li>
+<li>mandatory</li>
+</ul>
+</div>
+<div class="section" id="can-i-send-some-tasks-to-only-some-servers">
+<h2>Can I send some tasks to only some servers?<a class="headerlink" href="#can-i-send-some-tasks-to-only-some-servers" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer:</strong> As of now there is only one use-case that works like this,
+and that is tasks of type <tt class="docutils literal"><span class="pre">A</span></tt> can be sent to servers <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>,
+while tasks of type <tt class="docutils literal"><span class="pre">B</span></tt> can be sent to server <tt class="docutils literal"><span class="pre">z</span></tt>. One server can&#8217;t
+handle more than one routing_key, but this is coming in a later release.</p>
+<p>Say you have two servers, <tt class="docutils literal"><span class="pre">x</span></tt>, and <tt class="docutils literal"><span class="pre">y</span></tt> that handles regular tasks,
+and one server <tt class="docutils literal"><span class="pre">z</span></tt>, that only handles feed related tasks, you can use this
+configuration:</p>
+<blockquote>
+<ul class="simple">
+<li>Servers <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>: settings.py:</li>
+</ul>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">AMQP_SERVER</span> <span class="o">=</span> <span class="s">&quot;rabbit&quot;</span>
+<span class="n">AMQP_PORT</span> <span class="o">=</span> <span class="mf">5678</span>
+<span class="n">AMQP_USER</span> <span class="o">=</span> <span class="s">&quot;myapp&quot;</span>
+<span class="n">AMQP_PASSWORD</span> <span class="o">=</span> <span class="s">&quot;secret&quot;</span>
+<span class="n">AMQP_VHOST</span> <span class="o">=</span> <span class="s">&quot;myapp&quot;</span>
+
+<span class="n">CELERY_AMQP_CONSUMER_QUEUE</span> <span class="o">=</span> <span class="s">&quot;regular_tasks&quot;</span>
+<span class="n">CELERY_AMQP_EXCHANGE</span> <span class="o">=</span> <span class="s">&quot;tasks&quot;</span>
+<span class="n">CELERY_AMQP_PUBLISHER_ROUTING_KEY</span> <span class="o">=</span> <span class="s">&quot;task.regular&quot;</span>
+<span class="n">CELERY_AMQP_CONSUMER_ROUTING_KEY</span> <span class="o">=</span> <span class="s">&quot;task.#&quot;</span>
+<span class="n">CELERY_AMQP_EXCHANGE_TYPE</span> <span class="o">=</span> <span class="s">&quot;topic&quot;</span>
+</pre></div>
+</div>
+<ul class="simple">
+<li>Server <tt class="docutils literal"><span class="pre">z</span></tt>: settings.py:</li>
+</ul>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">AMQP_SERVER</span> <span class="o">=</span> <span class="s">&quot;rabbit&quot;</span>
+<span class="n">AMQP_PORT</span> <span class="o">=</span> <span class="mf">5678</span>
+<span class="n">AMQP_USER</span> <span class="o">=</span> <span class="s">&quot;myapp&quot;</span>
+<span class="n">AMQP_PASSWORD</span> <span class="o">=</span> <span class="s">&quot;secret&quot;</span>
+<span class="n">AMQP_VHOST</span> <span class="o">=</span> <span class="s">&quot;myapp&quot;</span>
+
+<span class="n">CELERY_AMQP_EXCHANGE</span> <span class="o">=</span> <span class="s">&quot;tasks&quot;</span>
+<span class="n">CELERY_AMQP_PUBLISHER_ROUTING_KEY</span> <span class="o">=</span> <span class="s">&quot;task.regular&quot;</span>
+<span class="n">CELERY_AMQP_EXCHANGE_TYPE</span> <span class="o">=</span> <span class="s">&quot;topic&quot;</span>
+<span class="c"># This is the settings different for this server:</span>
+<span class="n">CELERY_AMQP_CONSUMER_QUEUE</span> <span class="o">=</span> <span class="s">&quot;feed_tasks&quot;</span>
+<span class="n">CELERY_AMQP_CONSUMER_ROUTING_KEY</span> <span class="o">=</span> <span class="s">&quot;feed.#&quot;</span>
+</pre></div>
+</div>
+</blockquote>
+<p>Now to make a Task run on the <tt class="docutils literal"><span class="pre">z</span></tt> server you need to set its
+<tt class="docutils literal"><span class="pre">routing_key</span></tt> attribute so it starts with the words <tt class="docutils literal"><span class="pre">&quot;task.feed.&quot;</span></tt>:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">feedaggregator.models</span> <span class="kn">import</span> <span class="n">Feed</span>
+<span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">Task</span>
+
+<span class="k">class</span> <span class="nc">FeedImportTask</span><span class="p">(</span><span class="n">Task</span><span class="p">):</span>
+    <span class="n">routing_key</span> <span class="o">=</span> <span class="s">&quot;feed.importer&quot;</span>
+
+    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">feed_url</span><span class="p">):</span>
+        <span class="c"># something importing the feed</span>
+        <span class="n">Feed</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">import_feed</span><span class="p">(</span><span class="n">feed_url</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>You can also override this using the <tt class="docutils literal"><span class="pre">routing_key</span></tt> argument to
+<tt class="xref docutils literal"><span class="pre">celery.task.apply_async()</span></tt>:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">apply_async</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">myapp.tasks</span> <span class="kn">import</span> <span class="n">RefreshFeedTask</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">apply_async</span><span class="p">(</span><span class="n">RefreshFeedTask</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="s">&quot;http://cnn.com/rss&quot;</span><span class="p">],</span>
+<span class="gp">... </span>            <span class="n">routing_key</span><span class="o">=</span><span class="s">&quot;feed.importer&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="can-i-use-celery-without-django">
+<h2>Can I use celery without Django?<a class="headerlink" href="#can-i-use-celery-without-django" title="Permalink to this headline">¶</a></h2>
+<p><strong>Answer:</strong> Yes.</p>
+<p>Celery uses something called loaders to read/setup configuration, import
+modules that registers tasks and to decide what happens when a task is
+executed. Currently there are two loaders, the default loader and the Django
+loader. If you want to use celery without a Django project, you either have to
+use the default loader, or write a loader of your own.</p>
+<p>The rest of this answer describes how to use the default loader.</p>
+<p>First of all, installation. You need to get the development version of
+celery from github:</p>
+<div class="highlight-python"><pre>$ git clone git://github.com/ask/celery.git
+$ cd celery
+# python setup.py install # as root</pre>
+</div>
+<p>While it is possible to use celery from outside of Django, we still need
+Django itself to run, this is to use the ORM and cache-framework, etc.
+Duplicating these features would be time consuming and mostly pointless, so
+we decided that having a dependency on Django itself was a good thing.
+Install Django using your favorite install tool, <tt class="docutils literal"><span class="pre">easy_install</span></tt>, <tt class="docutils literal"><span class="pre">pip</span></tt>, or
+whatever:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="c"># easy_install django # as root</span>
+</pre></div>
+</div>
+<p>You need a configuration file named <tt class="docutils literal"><span class="pre">celeryconfig.py</span></tt>, either in the
+directory you run <tt class="docutils literal"><span class="pre">celeryd</span></tt> in, or in a Python library path where it is
+able to find it. The configuration file can contain any of the settings
+described in <a title="" class="reference external" href="reference/celery.conf.html#module-celery.conf"><tt class="xref docutils literal"><span class="pre">celery.conf</span></tt></a>, and in additional if you&#8217;re using the
+database backend you have to configure the database. Here is an example
+configuration using the database backend with MySQL:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="c"># Broker configuration</span>
+<span class="n">AMQP_SERVER</span> <span class="o">=</span> <span class="s">&quot;localhost&quot;</span>
+<span class="n">AMQP_PORT</span> <span class="o">=</span> <span class="s">&quot;5672&quot;</span>
+<span class="n">AMQP_VHOST</span> <span class="o">=</span> <span class="s">&quot;celery&quot;</span>
+<span class="n">AMQP_USER</span> <span class="o">=</span> <span class="s">&quot;celery&quot;</span>
+<span class="n">AMQP_PASSWORD</span> <span class="o">=</span> <span class="s">&quot;celerysecret&quot;</span>
+<span class="n">CARROT_BACKEND</span><span class="o">=</span><span class="s">&quot;amqp&quot;</span>
+
+<span class="c"># Using the database backend.</span>
+<span class="n">CELERY_BACKEND</span> <span class="o">=</span> <span class="s">&quot;database&quot;</span>
+<span class="n">DATABASE_ENGINE</span> <span class="o">=</span> <span class="s">&quot;mysql&quot;</span> <span class="c"># see Django docs for a description of these.</span>
+<span class="n">DATABASE_NAME</span> <span class="o">=</span> <span class="s">&quot;mydb&quot;</span>
+<span class="n">DATABASE_HOST</span> <span class="o">=</span> <span class="s">&quot;mydb.example.org&quot;</span>
+<span class="n">DATABASE_USER</span> <span class="o">=</span> <span class="s">&quot;myuser&quot;</span>
+<span class="n">DATABASE_PASSWORD</span> <span class="o">=</span> <span class="s">&quot;mysecret&quot;</span>
+
+<span class="c"># Number of processes that processes tasks simultaneously.</span>
+<span class="n">CELERYD_CONCURRENCY</span> <span class="o">=</span> <span class="mf">8</span>
+
+<span class="c"># Modules to import when celeryd starts.</span>
+<span class="c"># This must import every module where you register tasks so celeryd</span>
+<span class="c"># is able to find and run them.</span>
+<span class="n">CELERY_IMPORTS</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;mytaskmodule1&quot;</span><span class="p">,</span> <span class="s">&quot;mytaskmodule2&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Now with this configuration file in the current directory you have to
+run <tt class="docutils literal"><span class="pre">celeryinit</span></tt> to create the database tables:</p>
+<div class="highlight-python"><pre>$ celeryinit</pre>
+</div>
+<p>Then you should be able to successfully run <tt class="docutils literal"><span class="pre">celeryd</span></tt>:</p>
+<div class="highlight-python"><pre>$ celeryd --loglevel=INFO</pre>
+</div>
+<p>and send a task from a python shell (note that it must be able to import
+<tt class="docutils literal"><span class="pre">celeryconfig.py</span></tt>):</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task.builtins</span> <span class="kn">import</span> <span class="n">PingTask</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">PingTask</span><span class="o">.</span><span class="n">apply_async</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
+<span class="go">&#39;pong&#39;</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h3><a href="index.html">Table Of Contents</a></h3>
+            <ul>
+<li><a class="reference external" href="">Frequently Asked Questions</a><ul>
+<li><a class="reference external" href="#mysql-is-throwing-deadlock-errors-what-can-i-do">MySQL is throwing deadlock errors, what can I do?</a></li>
+<li><a class="reference external" href="#celeryd-is-not-doing-anything-just-hanging">celeryd is not doing anything, just hanging</a></li>
+<li><a class="reference external" href="#why-is-task-delay-apply-just-hanging">Why is Task.delay/apply* just hanging?`</a></li>
+<li><a class="reference external" href="#why-won-t-celeryd-run-on-freebsd">Why won&#8217;t celeryd run on FreeBSD?</a></li>
+<li><a class="reference external" href="#i-m-having-integrityerror-duplicate-key-errors-why">I&#8217;m having <tt class="docutils literal"><span class="pre">IntegrityError:</span> <span class="pre">Duplicate</span> <span class="pre">Key</span></tt> errors. Why?</a></li>
+<li><a class="reference external" href="#why-won-t-my-task-run">Why won&#8217;t my Task run?</a></li>
+<li><a class="reference external" href="#why-won-t-my-periodic-task-run">Why won&#8217;t my Periodic Task run?</a></li>
+<li><a class="reference external" href="#how-do-i-discard-all-waiting-tasks">How do I discard all waiting tasks?</a></li>
+<li><a class="reference external" href="#i-ve-discarded-messages-but-there-are-still-messages-left-in-the-queue">I&#8217;ve discarded messages, but there are still messages left in the queue?</a></li>
+<li><a class="reference external" href="#can-i-use-celery-with-activemq-stomp">Can I use celery with ActiveMQ/STOMP?</a></li>
+<li><a class="reference external" href="#which-features-are-not-supported-when-using-stomp">Which features are not supported when using STOMP?</a></li>
+<li><a class="reference external" href="#can-i-send-some-tasks-to-only-some-servers">Can I send some tasks to only some servers?</a></li>
+<li><a class="reference external" href="#can-i-use-celery-without-django">Can I use celery without Django?</a></li>
+</ul>
+</li>
+</ul>
+
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="tutorials/clickcounter.html"
+                                  title="previous chapter">Tutorial: Creating a click counter using carrot and celery</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="reference/index.html"
+                                  title="next chapter">Module API Reference</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="sources/faq.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="reference/index.html" title="Module API Reference"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="tutorials/clickcounter.html" title="Tutorial: Creating a click counter using carrot and celery"
+             >previous</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 779 - 0
genindex.html

@@ -0,0 +1,779 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Index &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="static/jquery.js"></script>
+    <script type="text/javascript" src="static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+
+   <h1 id="index">Index</h1>
+
+   <a href="#Symbols"><strong>Symbols</strong></a> | <a href="#A"><strong>A</strong></a> | <a href="#B"><strong>B</strong></a> | <a href="#C"><strong>C</strong></a> | <a href="#D"><strong>D</strong></a> | <a href="#E"><strong>E</strong></a> | <a href="#F"><strong>F</strong></a> | <a href="#G"><strong>G</strong></a> | <a href="#H"><strong>H</strong></a> | <a href="#I"><strong>I</strong></a> | <a href="#J"><strong>J</strong></a> | <a href="#K"><strong>K</strong></a> | <a href="#L"><strong>L</strong></a> | <a href="#M"><strong>M</strong></a> | <a href="#N"><strong>N</strong></a> | <a href="#O"><strong>O</strong></a> | <a href="#P"><strong>P</strong></a> | <a href="#R"><strong>R</strong></a> | <a href="#S"><strong>S</strong></a> | <a href="#T"><strong>T</strong></a> | <a href="#U"><strong>U</strong></a> | <a href="#W"><strong>W</strong></a> 
+
+   <hr />
+
+   
+<h2 id="Symbols">Symbols</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt>--chroot</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd--chroot">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>--discard</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd--discard">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>--umask</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd--umask">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>--workdir</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd--workdir">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>-c, --concurrency</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-c">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>-d, --detach, --daemon</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-d">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>-f, --logfile</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-f">celeryd command line option</a></dt>
+  </dl></dd></dl></td><td width="33%" valign="top"><dl>
+<dt>-g, --gid</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-g">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>-l, --loglevel</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-l">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>-p, --pidfile</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-p">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>-s, --statistics</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-s">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>-S, --supervised</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-S">celeryd command line option</a></dt>
+  </dl></dd>
+<dt>-u, --uid</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-u">celeryd command line option</a></dt>
+  </dl></dd>
+</dl></td></tr></table>
+
+<h2 id="A">A</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.managers.html#celery.managers.TableLock.acquire">acquire() (celery.managers.TableLock class method)</a></dt>
+<dt><a href="reference/celery.bin.celeryd.html#celery.bin.celeryd.acquire_pidlock">acquire_pidlock() (in module celery.bin.celeryd)</a></dt>
+<dt><a href="reference/celery.pool.html#celery.pool.DynamicPool.add_worker">add_worker() (celery.pool.DynamicPool method)</a></dt>
+<dt><a href="reference/celery.exceptions.html#celery.exceptions.AlreadyRegistered">AlreadyRegistered</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.ALWAYS_EAGER">ALWAYS_EAGER (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.ALWAYS_EAGER">[1]</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.AMQP_CONNECTION_MAX_RETRIES">AMQP_CONNECTION_MAX_RETRIES (in module celery.conf)</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.AMQP_CONNECTION_RETRY">AMQP_CONNECTION_RETRY (in module celery.conf)</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.AMQP_CONNECTION_TIMEOUT">AMQP_CONNECTION_TIMEOUT (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.AMQP_CONNECTION_TIMEOUT">[1]</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.AMQP_CONSUMER_QUEUE">AMQP_CONSUMER_QUEUE (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.AMQP_CONSUMER_QUEUE">[1]</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.AMQP_CONSUMER_QUEUES">AMQP_CONSUMER_QUEUES (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.AMQP_CONSUMER_QUEUES">[1]</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.AMQP_CONSUMER_ROUTING_KEY">AMQP_CONSUMER_ROUTING_KEY (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.AMQP_CONSUMER_ROUTING_KEY">[1]</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.AMQP_EXCHANGE">AMQP_EXCHANGE (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.AMQP_EXCHANGE">[1]</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.AMQP_EXCHANGE_TYPE">AMQP_EXCHANGE_TYPE (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.AMQP_EXCHANGE_TYPE">[1]</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController.amqp_listener">amqp_listener (celery.worker.WorkController attribute)</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.AMQP_PUBLISHER_ROUTING_KEY">AMQP_PUBLISHER_ROUTING_KEY (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.AMQP_PUBLISHER_ROUTING_KEY">[1]</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.worker.html#celery.worker.AMQPListener">AMQPListener (class in celery.worker)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.apply">apply() (celery.task.base.Task class method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.execute.html#celery.execute.apply">(in module celery.execute)</a></dt>
+    <dt><a href="reference/celery.views.html#celery.views.apply">(in module celery.views)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.pool.html#celery.pool.TaskPool.apply_async">apply_async() (celery.pool.TaskPool method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.task.base.html#celery.task.base.Task.apply_async">(celery.task.base.Task class method)</a></dt>
+    <dt><a href="reference/celery.execute.html#celery.execute.apply_async">(in module celery.execute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.args">args (celery.supervisor.OFASupervisor attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.args">(celery.worker.job.TaskWrapper attribute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.task.base.html#celery.task.base.TaskSet.arguments">arguments (celery.task.base.TaskSet attribute)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.AsynchronousMapTask">AsynchronousMapTask (class in celery.task.base)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.AsyncResult">AsyncResult (class in celery.result)</a></dt>
+<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.autodiscover">autodiscover() (celery.registry.TaskRegistry method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.discovery.html#celery.discovery.autodiscover">(in module celery.discovery)</a></dt>
+  </dl></dd>
+</dl></td></tr></table>
+
+<h2 id="B">B</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.result.html#celery.result.AsyncResult.backend">backend (celery.result.AsyncResult attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.backend">(celery.result.BaseAsyncResult attribute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.backends.amqp.html#celery.backends.amqp.Backend">Backend (class in celery.backends.amqp)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.backends.cache.html#celery.backends.cache.Backend">(class in celery.backends.cache)</a></dt>
+    <dt><a href="reference/celery.backends.database.html#celery.backends.database.Backend">(class in celery.backends.database)</a></dt>
+    <dt><a href="reference/celery.backends.tyrant.html#celery.backends.tyrant.Backend">(class in celery.backends.tyrant)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.BackgroundThread">BackgroundThread (class in celery.worker.controllers)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult">BaseAsyncResult (class in celery.result)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.TimeoutError">BaseAsyncResult.TimeoutError</a></dt>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend">BaseBackend (class in celery.backends.base)</a></dt>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.TimeoutError">BaseBackend.TimeoutError</a></dt>
+<dt><a href="reference/celery.loaders.base.html#celery.loaders.base.BaseLoader">BaseLoader (class in celery.loaders.base)</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.AMQPListener.bucket_queue">bucket_queue (celery.worker.AMQPListener attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.worker.html#celery.worker.WorkController.bucket_queue">(celery.worker.WorkController attribute)</a></dt>
+    <dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.Mediator.bucket_queue">(celery.worker.controllers.Mediator attribute)</a></dt>
+  </dl></dd>
+</dl></td></tr></table>
+
+<h2 id="C">C</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.Mediator.callback">callback (celery.worker.controllers.Mediator attribute)</a></dt>
+<dt><a href="reference/celery.backends.html#module-celery.backends">celery.backends (module)</a></dt>
+<dt><a href="reference/celery.backends.amqp.html#module-celery.backends.amqp">celery.backends.amqp (module)</a></dt>
+<dt><a href="reference/celery.backends.base.html#module-celery.backends.base">celery.backends.base (module)</a></dt>
+<dt><a href="reference/celery.backends.cache.html#module-celery.backends.cache">celery.backends.cache (module)</a></dt>
+<dt><a href="reference/celery.backends.database.html#module-celery.backends.database">celery.backends.database (module)</a></dt>
+<dt><a href="reference/celery.backends.tyrant.html#module-celery.backends.tyrant">celery.backends.tyrant (module)</a></dt>
+<dt><a href="reference/celery.bin.celeryd.html#module-celery.bin.celeryd">celery.bin.celeryd (module)</a></dt>
+<dt><a href="reference/celery.bin.celeryinit.html#module-celery.bin.celeryinit">celery.bin.celeryinit (module)</a></dt>
+<dt><a href="reference/celery.conf.html#module-celery.conf">celery.conf (module)</a></dt>
+<dt><a href="reference/celery.datastructures.html#module-celery.datastructures">celery.datastructures (module)</a></dt>
+<dt><a href="reference/celery.discovery.html#module-celery.discovery">celery.discovery (module)</a></dt>
+<dt><a href="reference/celery.exceptions.html#module-celery.exceptions">celery.exceptions (module)</a></dt>
+<dt><a href="reference/celery.execute.html#module-celery.execute">celery.execute (module)</a></dt>
+<dt><a href="reference/celery.fields.html#module-celery.fields">celery.fields (module)</a></dt>
+<dt><a href="reference/celery.loaders.html#module-celery.loaders">celery.loaders (module)</a></dt>
+<dt><a href="reference/celery.loaders.base.html#module-celery.loaders.base">celery.loaders.base (module)</a></dt>
+<dt><a href="reference/celery.loaders.default.html#module-celery.loaders.default">celery.loaders.default (module)</a></dt>
+<dt><a href="reference/celery.loaders.djangoapp.html#module-celery.loaders.djangoapp">celery.loaders.djangoapp (module)</a></dt>
+<dt><a href="reference/celery.log.html#module-celery.log">celery.log (module)</a></dt>
+<dt><a href="reference/celery.managers.html#module-celery.managers">celery.managers (module)</a></dt>
+<dt><a href="reference/celery.messaging.html#module-celery.messaging">celery.messaging (module)</a></dt>
+<dt><a href="reference/celery.monitoring.html#module-celery.monitoring">celery.monitoring (module)</a></dt>
+<dt><a href="reference/celery.pool.html#module-celery.pool">celery.pool (module)</a></dt>
+<dt><a href="reference/celery.registry.html#module-celery.registry">celery.registry (module)</a></dt>
+<dt><a href="reference/celery.result.html#module-celery.result">celery.result (module)</a></dt>
+<dt><a href="reference/celery.signals.html#module-celery.signals">celery.signals (module)</a></dt>
+<dt><a href="reference/celery.supervisor.html#module-celery.supervisor">celery.supervisor (module)</a></dt>
+<dt><a href="reference/celery.task.html#module-celery.task">celery.task (module)</a></dt>
+<dt><a href="reference/celery.task.base.html#module-celery.task.base">celery.task.base (module)</a></dt>
+<dt><a href="reference/celery.task.builtins.html#module-celery.task.builtins">celery.task.builtins (module)</a></dt>
+<dt><a href="reference/celery.task.strategy.html#module-celery.task.strategy">celery.task.strategy (module)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.utils.html#module-celery.utils">celery.utils (module)</a></dt>
+<dt><a href="reference/celery.views.html#module-celery.views">celery.views (module)</a></dt>
+<dt><a href="reference/celery.worker.html#module-celery.worker">celery.worker (module)</a></dt>
+<dt><a href="reference/celery.worker.controllers.html#module-celery.worker.controllers">celery.worker.controllers (module)</a></dt>
+<dt><a href="reference/celery.worker.job.html#module-celery.worker.job">celery.worker.job (module)</a></dt>
+<dt>celeryd command line option</dt>
+  <dd><dl>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd--chroot">--chroot</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd--discard">--discard</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd--umask">--umask</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd--workdir">--workdir</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-S">-S, --supervised</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-c">-c, --concurrency</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-d">-d, --detach, --daemon</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-f">-f, --logfile</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-g">-g, --gid</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-l">-l, --loglevel</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-p">-p, --pidfile</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-s">-s, --statistics</a></dt>
+    <dt><a href="reference/celery.bin.celeryd.html#cmdoption-celeryd-u">-u, --uid</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.check_interval">check_interval (celery.supervisor.OFASupervisor attribute)</a></dt>
+<dt><a href="reference/celery.utils.html#celery.utils.chunks">chunks() (in module celery.utils)</a></dt>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.cleanup">cleanup() (celery.backends.base.BaseBackend method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.backends.database.html#celery.backends.database.Backend.cleanup">(celery.backends.database.Backend method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.backends.tyrant.html#celery.backends.tyrant.Backend.close">close() (celery.backends.tyrant.Backend method)</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.AMQPListener.close_connection">close_connection() (celery.worker.AMQPListener method)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.StatsCollector.collect">collect() (celery.monitoring.StatsCollector method)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.TaskSetResult.completed_count">completed_count() (celery.result.TaskSetResult method)</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController.concurrency">concurrency (celery.worker.WorkController attribute)</a></dt>
+<dt><a href="reference/celery.loaders.base.html#celery.loaders.base.BaseLoader.conf">conf (celery.loaders.base.BaseLoader attribute)</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.AMQPListener.consume_messages">consume_messages() (celery.worker.AMQPListener method)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="D">D</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.Process.daemon">daemon (celery.supervisor.OFASupervisor.Process attribute)</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.DAEMON_CONCURRENCY">DAEMON_CONCURRENCY (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.DAEMON_CONCURRENCY">[1]</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.DAEMON_LOG_FILE">DAEMON_LOG_FILE (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.DAEMON_LOG_FILE">[1]</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.DAEMON_LOG_LEVEL">DAEMON_LOG_LEVEL (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.DAEMON_LOG_LEVEL">[1]</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.DAEMON_PID_FILE">DAEMON_PID_FILE (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.DAEMON_PID_FILE">[1]</a></dt>
+<dt><a href="reference/celery.models.html#TaskMeta.date_done">date_done (TaskMeta attribute)</a></dt>
+<dt><a href="reference/celery.messaging.html#celery.messaging.TaskConsumer.decoder">decoder() (celery.messaging.TaskConsumer method)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.SharedCounter.decrement">decrement() (celery.datastructures.SharedCounter method)</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.DEFAULT_AMQP_CONNECTION_MAX_RETRIES">DEFAULT_AMQP_CONNECTION_MAX_RETRIES (in module celery.conf)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.default_retry_delay">default_retry_delay (celery.task.base.Task attribute)</a></dt>
+<dt><a href="reference/celery.backends.html#celery.backends.DefaultBackend">DefaultBackend (class in celery.backends)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.delay">delay() (celery.task.base.Task class method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.models.html#PeriodicTaskMeta.delay">(PeriodicTaskMeta method)</a></dt>
+  </dl></dd></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.messaging.html#celery.messaging.TaskPublisher.delay_task">delay_task() (celery.messaging.TaskPublisher method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.execute.html#celery.execute.delay_task">(in module celery.execute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.messaging.html#celery.messaging.TaskPublisher.delay_task_in_set">delay_task_in_set() (celery.messaging.TaskPublisher method)</a></dt>
+<dt><a href="reference/celery.managers.html#celery.managers.TaskManager.delete_expired">delete_expired() (celery.managers.TaskManager method)</a></dt>
+<dt><a href="reference/celery.task.builtins.html#celery.task.builtins.DeleteExpiredTaskMetaTask">DeleteExpiredTaskMetaTask (class in celery.task.builtins)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.disable_error_emails">disable_error_emails (celery.task.base.Task attribute)</a></dt>
+<dt><a href="reference/celery.task.html#celery.task.discard_all">discard_all() (in module celery.task)</a></dt>
+<dt><a href="reference/celery.task.html#celery.task.dmap">dmap() (in module celery.task)</a></dt>
+<dt><a href="reference/celery.task.html#celery.task.dmap_async">dmap_async() (in module celery.task)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.StatsCollector.dump_to_cache">dump_to_cache() (celery.monitoring.StatsCollector method)</a></dt>
+<dt><a href="reference/celery.pool.html#celery.pool.DynamicPool">DynamicPool (class in celery.pool)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="E">E</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.result.html#celery.result.EagerResult">EagerResult (class in celery.result)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.EagerResult.TimeoutError">EagerResult.TimeoutError</a></dt>
+<dt><a href="reference/celery.log.html#celery.log.emergency_error">emergency_error() (in module celery.log)</a></dt>
+<dt><a href="reference/celery.messaging.html#celery.messaging.TaskPublisher.encoder">encoder() (celery.messaging.TaskPublisher method)</a></dt>
+<dt><a href="reference/celery.task.strategy.html#celery.task.strategy.even_time_distribution">even_time_distribution() (in module celery.task.strategy)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.ExceptionInfo.exception">exception (celery.datastructures.ExceptionInfo attribute)</a></dt>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.exception_to_python">exception_to_python() (celery.backends.base.BaseBackend method)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.ExceptionInfo">ExceptionInfo (class in celery.datastructures)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.exchange">exchange (celery.task.base.Task attribute)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.execute">execute() (celery.worker.job.TaskWrapper method)</a></dt>
+<dt><a href="reference/celery.task.html#celery.task.execute_remote">execute_remote() (in module celery.task)</a></dt>
+<dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.execute_using_pool">execute_using_pool() (celery.worker.job.TaskWrapper method)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.ExecuteRemoteTask">ExecuteRemoteTask (class in celery.task.base)</a></dt>
+<dt><a href="reference/celery.execute.html#celery.execute.ExecuteWrapper">ExecuteWrapper (class in celery.execute)</a></dt>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.Process.exitcode">exitcode (celery.supervisor.OFASupervisor.Process attribute)</a></dt>
+<dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.extend_with_default_kwargs">extend_with_default_kwargs() (celery.worker.job.TaskWrapper method)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="F">F</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.result.html#celery.result.TaskSetResult.failed">failed() (celery.result.TaskSetResult method)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.PositionQueue.filled">filled (celery.datastructures.PositionQueue attribute)</a></dt>
+<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.filter_types">filter_types() (celery.registry.TaskRegistry method)</a></dt>
+<dt><a href="reference/celery.discovery.html#celery.discovery.find_related_module">find_related_module() (in module celery.discovery)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.from_message">from_message() (celery.worker.job.TaskWrapper class method)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.PositionQueue.full">full() (celery.datastructures.PositionQueue method)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="G">G</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.utils.html#celery.utils.gen_unique_id">gen_unique_id() (in module celery.utils)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.get">get() (celery.result.BaseAsyncResult method)</a></dt>
+<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.get_all">get_all() (celery.registry.TaskRegistry method)</a></dt>
+<dt><a href="reference/celery.managers.html#celery.managers.TaskManager.get_all_expired">get_all_expired() (celery.managers.TaskManager method)</a></dt>
+<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.get_all_periodic">get_all_periodic() (celery.registry.TaskRegistry method)</a></dt>
+<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.get_all_regular">get_all_regular() (celery.registry.TaskRegistry method)</a></dt>
+<dt><a href="reference/celery.backends.html#celery.backends.get_backend_cls">get_backend_cls() (in module celery.backends)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.get_consumer">get_consumer() (celery.task.base.Task method)</a></dt>
+<dt><a href="reference/celery.fields.html#celery.fields.PickledObjectField.get_db_prep_lookup">get_db_prep_lookup() (celery.fields.PickledObjectField method)</a></dt>
+<dt><a href="reference/celery.fields.html#celery.fields.PickledObjectField.get_db_prep_save">get_db_prep_save() (celery.fields.PickledObjectField method)</a></dt>
+<dt><a href="reference/celery.backends.html#celery.backends.get_default_backend_cls">get_default_backend_cls (in module celery.backends)</a></dt>
+<dt><a href="reference/celery.backends.html#celery.backends.get_default_periodicstatus_backend_cls">get_default_periodicstatus_backend_cls (in module celery.backends)</a></dt>
+<dt><a href="reference/celery.backends.html#celery.backends.get_default_periodicstatus_backend_cls">get_default_periodicstatus_backend_cls() (in module celery.backends)</a></dt>
+<dt><a href="reference/celery.utils.html#celery.utils.get_full_cls_name">get_full_cls_name() (in module celery.utils)</a></dt>
+<dt><a href="reference/celery.fields.html#celery.fields.PickledObjectField.get_internal_type">get_internal_type() (celery.fields.PickledObjectField method)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.get_logger">get_logger() (celery.task.base.Task method)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.get_publisher">get_publisher() (celery.task.base.Task method)</a></dt>
+<dt><a href="reference/celery.backends.amqp.html#celery.backends.amqp.Backend.get_result">get_result() (celery.backends.amqp.Backend method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.get_result">(celery.backends.base.BaseBackend method)</a></dt>
+    <dt><a href="reference/celery.backends.database.html#celery.backends.database.Backend.get_result">(celery.backends.database.Backend method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.backends.amqp.html#celery.backends.amqp.Backend.get_status">get_status() (celery.backends.amqp.Backend method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.get_status">(celery.backends.base.BaseBackend method)</a></dt>
+    <dt><a href="reference/celery.backends.database.html#celery.backends.database.Backend.get_status">(celery.backends.database.Backend method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.managers.html#celery.managers.TaskManager.get_task">get_task() (celery.managers.TaskManager method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.get_task">(celery.registry.TaskRegistry method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.backends.amqp.html#celery.backends.amqp.Backend.get_traceback">get_traceback() (celery.backends.amqp.Backend method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.get_traceback">(celery.backends.base.BaseBackend method)</a></dt>
+    <dt><a href="reference/celery.backends.database.html#celery.backends.database.Backend.get_traceback">(celery.backends.database.Backend method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.managers.html#celery.managers.PeriodicTaskManager.get_waiting_tasks">get_waiting_tasks() (celery.managers.PeriodicTaskManager method)</a></dt>
+<dt><a href="reference/celery.pool.html#celery.pool.DynamicPool.grow">grow() (celery.pool.DynamicPool method)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="H">H</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.execute.html#celery.execute.ExecuteWrapper.handle_failure">handle_failure() (celery.execute.ExecuteWrapper method)</a></dt>
+<dt><a href="reference/celery.execute.html#celery.execute.ExecuteWrapper.handle_retry">handle_retry() (celery.execute.ExecuteWrapper method)</a></dt>
+<dt><a href="reference/celery.execute.html#celery.execute.ExecuteWrapper.handle_success">handle_success() (celery.execute.ExecuteWrapper method)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.worker.html#celery.worker.AMQPListener.hold_queue">hold_queue (celery.worker.AMQPListener attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.worker.html#celery.worker.WorkController.hold_queue">(celery.worker.WorkController attribute)</a></dt>
+  </dl></dd>
+</dl></td></tr></table>
+
+<h2 id="I">I</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.Process.ident">ident (celery.supervisor.OFASupervisor.Process attribute)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.ignore_result">ignore_result (celery.task.base.Task attribute)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.SharedCounter.increment">increment() (celery.datastructures.SharedCounter method)</a></dt>
+<dt><a href="reference/celery.managers.html#celery.managers.PeriodicTaskManager.init_entries">init_entries() (celery.managers.PeriodicTaskManager method)</a></dt>
+<dt><a href="reference/celery.backends.database.html#celery.backends.database.Backend.init_periodic_tasks">init_periodic_tasks() (celery.backends.database.Backend method)</a></dt>
+<dt><a href="reference/celery.bin.celeryd.html#celery.bin.celeryd.install_restart_signal_handler">install_restart_signal_handler() (in module celery.bin.celeryd)</a></dt>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.Process.is_alive">is_alive() (celery.supervisor.OFASupervisor.Process method)</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController.is_detached">is_detached (celery.worker.WorkController attribute)</a></dt>
+<dt><a href="reference/celery.backends.amqp.html#celery.backends.amqp.Backend.is_done">is_done() (celery.backends.amqp.Backend method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.is_done">(celery.backends.base.BaseBackend method)</a></dt>
+    <dt><a href="reference/celery.backends.database.html#celery.backends.database.Backend.is_done">(celery.backends.database.Backend method)</a></dt>
+    <dt><a href="reference/celery.managers.html#celery.managers.TaskManager.is_done">(celery.managers.TaskManager method)</a></dt>
+    <dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.is_done">(celery.result.BaseAsyncResult method)</a></dt>
+    <dt><a href="reference/celery.result.html#celery.result.EagerResult.is_done">(celery.result.EagerResult method)</a></dt>
+    <dt><a href="reference/celery.task.html#celery.task.is_done">(in module celery.task)</a></dt>
+  </dl></dd></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.result.html#celery.result.EagerResult.is_ready">is_ready() (celery.result.EagerResult method)</a></dt>
+<dt><a href="reference/celery.views.html#celery.views.is_task_done">is_task_done() (in module celery.views)</a></dt>
+<dt><a href="reference/celery.managers.html#celery.managers.PeriodicTaskManager.is_time">is_time() (celery.managers.PeriodicTaskManager method)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.TaskSetResult.iterate">iterate() (celery.result.TaskSetResult method)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.TaskSetResult.itersubtasks">itersubtasks() (celery.result.TaskSetResult method)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="J">J</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.result.html#celery.result.TaskSetResult.join">join() (celery.result.TaskSetResult method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.Process.join">(celery.supervisor.OFASupervisor.Process method)</a></dt>
+    <dt><a href="reference/celery.task.base.html#celery.task.base.TaskSet.join">(celery.task.base.TaskSet method)</a></dt>
+  </dl></dd></dl></td><td width="33%" valign="top"><dl>
+</dl></td></tr></table>
+
+<h2 id="K">K</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.kwargs">kwargs (celery.supervisor.OFASupervisor attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.kwargs">(celery.worker.job.TaskWrapper attribute)</a></dt>
+  </dl></dd></dl></td><td width="33%" valign="top"><dl>
+</dl></td></tr></table>
+
+<h2 id="L">L</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.models.html#PeriodicTaskMeta.last_run_at">last_run_at (PeriodicTaskMeta attribute)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.PositionQueue.length">length (celery.datastructures.PositionQueue attribute)</a></dt>
+<dt><a href="reference/celery.pool.html#celery.pool.TaskPool.limit">limit (celery.pool.TaskPool attribute)</a></dt>
+<dt><a href="reference/celery.loaders.default.html#celery.loaders.default.Loader">Loader (class in celery.loaders.default)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.loaders.djangoapp.html#celery.loaders.djangoapp.Loader">(class in celery.loaders.djangoapp)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.managers.html#celery.managers.MySQLTableLock.lock_table">lock_table() (celery.managers.MySQLTableLock method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.managers.html#celery.managers.TableLock.lock_table">(celery.managers.TableLock method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.conf.html#celery.conf.LOG_FORMAT">LOG_FORMAT (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.LOG_FORMAT">[1]</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.conf.html#celery.conf.LOG_LEVELS">LOG_LEVELS (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.LOG_LEVELS">[1]</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController.logfile">logfile (celery.worker.WorkController attribute)</a></dt>
+<dt><a href="reference/celery.pool.html#celery.pool.TaskPool.logger">logger (celery.pool.TaskPool attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.worker.html#celery.worker.AMQPListener.logger">(celery.worker.AMQPListener attribute)</a></dt>
+    <dt><a href="reference/celery.worker.html#celery.worker.WorkController.logger">(celery.worker.WorkController attribute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController.loglevel">loglevel (celery.worker.WorkController attribute)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="M">M</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.mandatory">mandatory (celery.task.base.Task attribute)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.TaskSet.map">map() (celery.task.base.TaskSet class method)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.TaskSet.map_async">map_async() (celery.task.base.TaskSet class method)</a></dt>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.mark_as_done">mark_as_done() (celery.backends.base.BaseBackend method)</a></dt>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.mark_as_failure">mark_as_failure() (celery.backends.base.BaseBackend method)</a></dt>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.mark_as_retry">mark_as_retry() (celery.backends.base.BaseBackend method)</a></dt>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.max_restart_freq">max_restart_freq (celery.supervisor.OFASupervisor attribute)</a></dt>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.max_restart_freq_time">max_restart_freq_time (celery.supervisor.OFASupervisor attribute)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.max_retries">max_retries (celery.task.base.Task attribute)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.MaxRestartsExceededError">MaxRestartsExceededError</a></dt>
+<dt><a href="reference/celery.exceptions.html#celery.exceptions.MaxRetriesExceededError">MaxRetriesExceededError</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController.mediator">mediator (celery.worker.WorkController attribute)</a></dt>
+<dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.Mediator">Mediator (class in celery.worker.controllers)</a></dt>
+<dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.message">message (celery.worker.job.TaskWrapper attribute)</a></dt>
+<dt><a href="reference/celery.utils.html#celery.utils.mitemgetter">mitemgetter() (in module celery.utils)</a></dt>
+<dt><a href="reference/celery.managers.html#celery.managers.MySQLTableLock">MySQLTableLock (class in celery.managers)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="N">N</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.name">name (celery.task.base.Task attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.models.html#PeriodicTaskMeta.name">(PeriodicTaskMeta attribute)</a></dt>
+  </dl></dd></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.exceptions.html#celery.exceptions.NotRegistered">NotRegistered</a></dt>
+</dl></td></tr></table>
+
+<h2 id="O">O</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor">OFASupervisor (class in celery.supervisor)</a></dt>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.Process">OFASupervisor.Process (class in celery.supervisor)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.on_failure">on_failure() (celery.task.base.Task method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.on_failure">(celery.worker.job.TaskWrapper method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.TimerStats.on_finish">on_finish() (celery.monitoring.TimerStats method)</a></dt>
+<dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.BackgroundThread.on_iteration">on_iteration() (celery.worker.controllers.BackgroundThread method)</a></dt>
+<dt><a href="reference/celery.pool.html#celery.pool.TaskPool.on_ready">on_ready() (celery.pool.TaskPool method)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.on_retry">on_retry() (celery.task.base.Task method)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.Statistics.on_start">on_start() (celery.monitoring.Statistics method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.monitoring.html#celery.monitoring.TimerStats.on_start">(celery.monitoring.TimerStats method)</a></dt>
+    <dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.BackgroundThread.on_start">(celery.worker.controllers.BackgroundThread method)</a></dt>
+    <dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.PeriodicWorkController.on_start">(celery.worker.controllers.PeriodicWorkController method)</a></dt>
+  </dl></dd></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.Statistics.on_stop">on_stop() (celery.monitoring.Statistics method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.BackgroundThread.on_stop">(celery.worker.controllers.BackgroundThread method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.on_success">on_success() (celery.task.base.Task method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.on_success">(celery.worker.job.TaskWrapper method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.loaders.base.html#celery.loaders.base.BaseLoader.on_task_init">on_task_init() (celery.loaders.base.BaseLoader method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.loaders.djangoapp.html#celery.loaders.djangoapp.Loader.on_task_init">(celery.loaders.djangoapp.Loader method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.loaders.base.html#celery.loaders.base.BaseLoader.on_worker_init">on_worker_init() (celery.loaders.base.BaseLoader method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.loaders.default.html#celery.loaders.default.Loader.on_worker_init">(celery.loaders.default.Loader method)</a></dt>
+    <dt><a href="reference/celery.loaders.djangoapp.html#celery.loaders.djangoapp.Loader.on_worker_init">(celery.loaders.djangoapp.Loader method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.backends.tyrant.html#celery.backends.tyrant.Backend.open">open() (celery.backends.tyrant.Backend method)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="P">P</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.bin.celeryd.html#celery.bin.celeryd.parse_options">parse_options() (in module celery.bin.celeryd)</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController.periodic_work_controller">periodic_work_controller (celery.worker.WorkController attribute)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.PeriodicTask">PeriodicTask (class in celery.task.base)</a></dt>
+<dt><a href="reference/celery.managers.html#celery.managers.PeriodicTaskManager">PeriodicTaskManager (class in celery.managers)</a></dt>
+<dt><a href="reference/celery.models.html#PeriodicTaskMeta">PeriodicTaskMeta (built-in class)</a></dt>
+<dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.PeriodicWorkController">PeriodicWorkController (class in celery.worker.controllers)</a></dt>
+<dt><a href="reference/celery.fields.html#celery.fields.PickledObject">PickledObject (class in celery.fields)</a></dt>
+<dt><a href="reference/celery.fields.html#celery.fields.PickledObjectField">PickledObjectField (class in celery.fields)</a></dt>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.Process.pid">pid (celery.supervisor.OFASupervisor.Process attribute)</a></dt>
+<dt><a href="reference/celery.pool.html#celery.pool.pid_is_dead">pid_is_dead() (in module celery.pool)</a></dt>
+<dt><a href="reference/celery.task.html#celery.task.ping">ping() (in module celery.task)</a></dt>
+<dt><a href="reference/celery.task.builtins.html#celery.task.builtins.PingTask">PingTask (class in celery.task.builtins)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController.pool">pool (celery.worker.WorkController attribute)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.PositionQueue">PositionQueue (class in celery.datastructures)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.PositionQueue.UnfilledPosition">PositionQueue.UnfilledPosition (class in celery.datastructures)</a></dt>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.prepare_exception">prepare_exception() (celery.backends.base.BaseBackend method)</a></dt>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.prepare_result">prepare_result() (celery.backends.base.BaseBackend method)</a></dt>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.process_cleanup">process_cleanup() (celery.backends.base.BaseBackend method)</a></dt>
+<dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.PeriodicWorkController.process_hold_queue">process_hold_queue() (celery.worker.controllers.PeriodicWorkController method)</a></dt>
+<dt><a href="reference/celery.pool.html#celery.pool.process_is_dead">process_is_dead() (in module celery.pool)</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController.process_task">process_task() (celery.worker.WorkController method)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.Statistics.publish">publish() (celery.monitoring.Statistics method)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="R">R</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.loaders.default.html#celery.loaders.default.Loader.read_configuration">read_configuration() (celery.loaders.default.Loader method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.loaders.djangoapp.html#celery.loaders.djangoapp.Loader.read_configuration">(celery.loaders.djangoapp.Loader method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.ready">ready() (celery.result.BaseAsyncResult method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.result.html#celery.result.TaskSetResult.ready">(celery.result.TaskSetResult method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.pool.html#celery.pool.reap_process">reap_process() (in module celery.pool)</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.AMQPListener.receive_message">receive_message() (celery.worker.AMQPListener method)</a></dt>
+<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.register">register() (celery.registry.TaskRegistry method)</a></dt>
+<dt><a href="reference/celery.managers.html#celery.managers.TableLock.release">release() (celery.managers.TableLock method)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.TaskSet.remote_execute">remote_execute() (celery.task.base.TaskSet class method)</a></dt>
+<dt><a href="reference/celery.utils.html#celery.utils.repeatlast">repeatlast() (in module celery.utils)</a></dt>
+<dt><a href="reference/celery.pool.html#celery.pool.DynamicPool.replace_dead_workers">replace_dead_workers() (celery.pool.DynamicPool method)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.StatsCollector.report">report() (celery.monitoring.StatsCollector method)</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.AMQPListener.reset_connection">reset_connection() (celery.worker.AMQPListener method)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.result">result (celery.result.BaseAsyncResult attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.models.html#TaskMeta.result">(TaskMeta attribute)</a></dt>
+    <dt><a href="reference/celery.result.html#celery.result.EagerResult.result">(celery.result.EagerResult attribute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.retry">retry() (celery.task.base.Task method)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.utils.html#celery.utils.retry_over_time">retry_over_time() (in module celery.utils)</a></dt>
+<dt><a href="reference/celery.exceptions.html#celery.exceptions.RetryTaskError">RetryTaskError</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.routing_key">routing_key (celery.task.base.Task attribute)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.Statistics.run">run() (celery.monitoring.Statistics method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.Process.run">(celery.supervisor.OFASupervisor.Process method)</a></dt>
+    <dt><a href="reference/celery.task.base.html#celery.task.base.AsynchronousMapTask.run">(celery.task.base.AsynchronousMapTask method)</a></dt>
+    <dt><a href="reference/celery.task.base.html#celery.task.base.ExecuteRemoteTask.run">(celery.task.base.ExecuteRemoteTask method)</a></dt>
+    <dt><a href="reference/celery.task.base.html#celery.task.base.Task.run">(celery.task.base.Task method)</a></dt>
+    <dt><a href="reference/celery.task.base.html#celery.task.base.TaskSet.run">(celery.task.base.TaskSet method)</a></dt>
+    <dt><a href="reference/celery.task.builtins.html#celery.task.builtins.DeleteExpiredTaskMetaTask.run">(celery.task.builtins.DeleteExpiredTaskMetaTask method)</a></dt>
+    <dt><a href="reference/celery.task.builtins.html#celery.task.builtins.PingTask.run">(celery.task.builtins.PingTask method)</a></dt>
+    <dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.BackgroundThread.run">(celery.worker.controllers.BackgroundThread method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.task.base.html#celery.task.base.PeriodicTask.run_every">run_every (celery.task.base.PeriodicTask attribute)</a></dt>
+<dt><a href="reference/celery.backends.database.html#celery.backends.database.Backend.run_periodic_tasks">run_periodic_tasks() (celery.backends.database.Backend method)</a></dt>
+<dt><a href="reference/celery.bin.celeryd.html#celery.bin.celeryd.run_worker">run_worker() (in module celery.bin.celeryd)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="S">S</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController.safe_process_task">safe_process_task() (celery.worker.WorkController method)</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.SEND_CELERY_TASK_ERROR_EMAILS">SEND_CELERY_TASK_ERROR_EMAILS (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.SEND_CELERY_TASK_ERROR_EMAILS">[1]</a></dt>
+<dt><a href="reference/celery.log.html#celery.log.setup_logger">setup_logger() (in module celery.log)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.SharedCounter">SharedCounter (class in celery.datastructures)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.Statistics.start">start() (celery.monitoring.Statistics class method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.pool.html#celery.pool.TaskPool.start">(celery.pool.TaskPool method)</a></dt>
+    <dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.start">(celery.supervisor.OFASupervisor method)</a></dt>
+    <dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.Process.start">(celery.supervisor.OFASupervisor.Process method)</a></dt>
+    <dt><a href="reference/celery.worker.html#celery.worker.AMQPListener.start">(celery.worker.AMQPListener method)</a></dt>
+    <dt><a href="reference/celery.worker.html#celery.worker.WorkController.start">(celery.worker.WorkController method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.Statistics">Statistics (class in celery.monitoring)</a></dt>
+<dt><a href="reference/celery.conf.html#celery.conf.STATISTICS_COLLECT_INTERVAL">STATISTICS_COLLECT_INTERVAL (in module celery.conf)</a>, <a href="reference/celery.conf.html#celery.conf.STATISTICS_COLLECT_INTERVAL">[1]</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.StatsCollector">StatsCollector (class in celery.monitoring)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.status">status (celery.result.BaseAsyncResult attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.models.html#TaskMeta.status">(TaskMeta attribute)</a></dt>
+    <dt><a href="reference/celery.result.html#celery.result.EagerResult.status">(celery.result.EagerResult attribute)</a></dt>
+  </dl></dd></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.Statistics.stop">stop() (celery.monitoring.Statistics method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.pool.html#celery.pool.TaskPool.stop">(celery.pool.TaskPool method)</a></dt>
+    <dt><a href="reference/celery.worker.html#celery.worker.AMQPListener.stop">(celery.worker.AMQPListener method)</a></dt>
+    <dt><a href="reference/celery.worker.html#celery.worker.WorkController.stop">(celery.worker.WorkController method)</a></dt>
+    <dt><a href="reference/celery.worker.controllers.html#celery.worker.controllers.BackgroundThread.stop">(celery.worker.controllers.BackgroundThread method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.backends.amqp.html#celery.backends.amqp.Backend.store_result">store_result() (celery.backends.amqp.Backend method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.store_result">(celery.backends.base.BaseBackend method)</a></dt>
+    <dt><a href="reference/celery.backends.database.html#celery.backends.database.Backend.store_result">(celery.backends.database.Backend method)</a></dt>
+    <dt><a href="reference/celery.managers.html#celery.managers.TaskManager.store_result">(celery.managers.TaskManager method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.result.html#celery.result.TaskSetResult.subtasks">subtasks (celery.result.TaskSetResult attribute)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.successful">successful() (celery.result.BaseAsyncResult method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.result.html#celery.result.TaskSetResult.successful">(celery.result.TaskSetResult method)</a></dt>
+  </dl></dd>
+</dl></td></tr></table>
+
+<h2 id="T">T</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.managers.html#celery.managers.table_lock">table_lock (in module celery.managers)</a></dt>
+<dt><a href="reference/celery.managers.html#celery.managers.TableLock">TableLock (class in celery.managers)</a></dt>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.target">target (celery.supervisor.OFASupervisor attribute)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task">Task (class in celery.task.base)</a></dt>
+<dt><a href="reference/celery.models.html#PeriodicTaskMeta.task">task (PeriodicTaskMeta attribute)</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.Task.MaxRetriesExceededError">Task.MaxRetriesExceededError</a></dt>
+<dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.task_func">task_func (celery.worker.job.TaskWrapper attribute)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.AsyncResult.task_id">task_id (celery.result.AsyncResult attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.models.html#TaskMeta.task_id">(TaskMeta attribute)</a></dt>
+    <dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.task_id">(celery.result.BaseAsyncResult attribute)</a></dt>
+    <dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.task_id">(celery.worker.job.TaskWrapper attribute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.task.base.html#celery.task.base.TaskSet.task_name">task_name (celery.task.base.TaskSet attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper.task_name">(celery.worker.job.TaskWrapper attribute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.views.html#celery.views.task_status">task_status() (in module celery.views)</a></dt>
+<dt><a href="reference/celery.models.html#TASK_STATUS_DONE">TASK_STATUS_DONE (built-in variable)</a></dt>
+<dt><a href="reference/celery.models.html#TASK_STATUS_FAILURE">TASK_STATUS_FAILURE (built-in variable)</a></dt>
+<dt><a href="reference/celery.models.html#TASK_STATUS_PENDING">TASK_STATUS_PENDING (built-in variable)</a></dt>
+<dt><a href="reference/celery.models.html#TASK_STATUS_RETRY">TASK_STATUS_RETRY (built-in variable)</a></dt>
+<dt><a href="reference/celery.models.html#TASK_STATUSES">TASK_STATUSES (built-in variable)</a></dt>
+<dt><a href="reference/celery.models.html#TASK_STATUSES_CHOICES">TASK_STATUSES_CHOICES (built-in variable)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.StatsCollector.task_time_running">task_time_running() (celery.monitoring.StatsCollector method)</a></dt>
+<dt><a href="reference/celery.messaging.html#celery.messaging.TaskConsumer">TaskConsumer (class in celery.messaging)</a></dt>
+<dt><a href="reference/celery.managers.html#celery.managers.TaskManager">TaskManager (class in celery.managers)</a></dt>
+<dt><a href="reference/celery.models.html#TaskMeta">TaskMeta (built-in class)</a></dt>
+<dt><a href="reference/celery.pool.html#celery.pool.TaskPool">TaskPool (class in celery.pool)</a></dt>
+<dt><a href="reference/celery.messaging.html#celery.messaging.TaskPublisher">TaskPublisher (class in celery.messaging)</a></dt>
+<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry">TaskRegistry (class in celery.registry)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.AlreadyRegistered">TaskRegistry.AlreadyRegistered</a></dt>
+<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.NotRegistered">TaskRegistry.NotRegistered</a></dt>
+<dt><a href="reference/celery.task.base.html#celery.task.base.TaskSet">TaskSet (class in celery.task.base)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.TaskSetResult.taskset_id">taskset_id (celery.result.TaskSetResult attribute)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.TaskSetResult">TaskSetResult (class in celery.result)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.TaskTimerStats">TaskTimerStats (class in celery.monitoring)</a></dt>
+<dt><a href="reference/celery.worker.job.html#celery.worker.job.TaskWrapper">TaskWrapper (class in celery.worker.job)</a></dt>
+<dt><a href="reference/celery.supervisor.html#celery.supervisor.OFASupervisor.Process.terminate">terminate() (celery.supervisor.OFASupervisor.Process method)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.TimerStats.time_start">time_start (celery.monitoring.TimerStats attribute)</a></dt>
+<dt><a href="reference/celery.exceptions.html#celery.exceptions.TimeoutError">TimeoutError</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.TimerStats">TimerStats (class in celery.monitoring)</a></dt>
+<dt><a href="reference/celery.fields.html#celery.fields.PickledObjectField.to_python">to_python() (celery.fields.PickledObjectField method)</a></dt>
+<dt><a href="reference/celery.result.html#celery.result.TaskSetResult.total">total (celery.result.TaskSetResult attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.task.base.html#celery.task.base.TaskSet.total">(celery.task.base.TaskSet attribute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.models.html#PeriodicTaskMeta.total_run_count">total_run_count (PeriodicTaskMeta attribute)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.StatsCollector.total_task_time_running">total_task_time_running (celery.monitoring.StatsCollector attribute)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.StatsCollector.total_task_time_running_by_type">total_task_time_running_by_type (celery.monitoring.StatsCollector attribute)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.StatsCollector.total_tasks_processed">total_tasks_processed (celery.monitoring.StatsCollector attribute)</a></dt>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.StatsCollector.total_tasks_processed_by_type">total_tasks_processed_by_type (celery.monitoring.StatsCollector attribute)</a></dt>
+<dt><a href="reference/celery.datastructures.html#celery.datastructures.ExceptionInfo.traceback">traceback (celery.datastructures.ExceptionInfo attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.traceback">(celery.result.BaseAsyncResult attribute)</a></dt>
+    <dt><a href="reference/celery.result.html#celery.result.EagerResult.traceback">(celery.result.EagerResult attribute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.monitoring.html#celery.monitoring.Statistics.type">type (celery.monitoring.Statistics attribute)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.task.base.html#celery.task.base.Task.type">(celery.task.base.Task attribute)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.backends.tyrant.html#celery.backends.tyrant.Backend.tyrant_host">tyrant_host (celery.backends.tyrant.Backend attribute)</a></dt>
+<dt><a href="reference/celery.backends.tyrant.html#celery.backends.tyrant.Backend.tyrant_port">tyrant_port (celery.backends.tyrant.Backend attribute)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="U">U</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.managers.html#celery.managers.MySQLTableLock.unlock_table">unlock_table() (celery.managers.MySQLTableLock method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.managers.html#celery.managers.TableLock.unlock_table">(celery.managers.TableLock method)</a></dt>
+  </dl></dd></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.unregister">unregister() (celery.registry.TaskRegistry method)</a></dt>
+</dl></td></tr></table>
+
+<h2 id="W">W</h2>
+<table width="100%" class="indextable"><tr><td width="33%" valign="top">
+<dl>
+
+<dt><a href="reference/celery.result.html#celery.result.BaseAsyncResult.wait">wait() (celery.result.BaseAsyncResult method)</a></dt>
+  <dd><dl>
+    <dt><a href="reference/celery.result.html#celery.result.EagerResult.wait">(celery.result.EagerResult method)</a></dt>
+  </dl></dd>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.wait_for">wait_for() (celery.backends.base.BaseBackend method)</a></dt></dl></td><td width="33%" valign="top"><dl>
+<dt><a href="reference/celery.result.html#celery.result.TaskSetResult.waiting">waiting() (celery.result.TaskSetResult method)</a></dt>
+<dt><a href="reference/celery.worker.html#celery.worker.WorkController">WorkController (class in celery.worker)</a></dt>
+</dl></td></tr></table>
+
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+
+   
+
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 232 - 0
index.html

@@ -0,0 +1,232 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Celery - Distributed Task Queue &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="static/jquery.js"></script>
+    <script type="text/javascript" src="static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="" />
+    <link rel="next" title="celery - Distributed Task Queue for Django/Python" href="introduction.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="introduction.html" title="celery - Distributed Task Queue for Django/Python"
+             accesskey="N">next</a> |</li>
+        <li><a href="">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="celery-distributed-task-queue">
+<h1>Celery - Distributed Task Queue<a class="headerlink" href="#celery-distributed-task-queue" title="Permalink to this headline">¶</a></h1>
+<p>Contents:</p>
+<ul>
+<li class="toctree-l1"><a class="reference external" href="introduction.html">celery - Distributed Task Queue for Django/Python</a><ul>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#overview">Overview</a></li>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#features">Features</a></li>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#api-reference-documentation">API Reference Documentation</a></li>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#installation">Installation</a></li>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#usage">Usage</a></li>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#a-look-inside-the-worker">A look inside the worker</a></li>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#getting-help">Getting Help</a></li>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#bug-tracker">Bug tracker</a></li>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#contributing">Contributing</a></li>
+<li class="toctree-l2"><a class="reference external" href="introduction.html#license">License</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="cookbook/index.html">Cookbook</a><ul>
+<li class="toctree-l2"><a class="reference external" href="cookbook/task-retries.html">Retrying Tasks</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="tutorials/index.html">Tutorials</a><ul>
+<li class="toctree-l2"><a class="reference external" href="tutorials/clickcounter.html">Tutorial: Creating a click counter using carrot and celery</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="faq.html">Frequently Asked Questions</a><ul>
+<li class="toctree-l2"><a class="reference external" href="faq.html#mysql-is-throwing-deadlock-errors-what-can-i-do">MySQL is throwing deadlock errors, what can I do?</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#celeryd-is-not-doing-anything-just-hanging">celeryd is not doing anything, just hanging</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#why-is-task-delay-apply-just-hanging">Why is Task.delay/apply* just hanging?`</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#why-won-t-celeryd-run-on-freebsd">Why won&#8217;t celeryd run on FreeBSD?</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#i-m-having-integrityerror-duplicate-key-errors-why">I&#8217;m having <tt class="docutils literal"><span class="pre">IntegrityError:</span> <span class="pre">Duplicate</span> <span class="pre">Key</span></tt> errors. Why?</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#why-won-t-my-task-run">Why won&#8217;t my Task run?</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#why-won-t-my-periodic-task-run">Why won&#8217;t my Periodic Task run?</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#how-do-i-discard-all-waiting-tasks">How do I discard all waiting tasks?</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#i-ve-discarded-messages-but-there-are-still-messages-left-in-the-queue">I&#8217;ve discarded messages, but there are still messages left in the queue?</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#can-i-use-celery-with-activemq-stomp">Can I use celery with ActiveMQ/STOMP?</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#which-features-are-not-supported-when-using-stomp">Which features are not supported when using STOMP?</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#can-i-send-some-tasks-to-only-some-servers">Can I send some tasks to only some servers?</a></li>
+<li class="toctree-l2"><a class="reference external" href="faq.html#can-i-use-celery-without-django">Can I use celery without Django?</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="reference/index.html">Module API Reference</a><ul>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.task.base.html">Defining Tasks - celery.task.base</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.execute.html">Executing Tasks - celery.execute</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.result.html">Task Result - celery.result</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.task.html">Task Information and Utilities - celery.task</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.registry.html">Task Registry - celery.registry</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.signals.html">Signals - celery.signals</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.exceptions.html">Exceptions - celery.exceptions</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.task.builtins.html">Built-in Task Classes - celery.task.builtins</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.task.strategy.html">Common Task Strategies - celery.task.strategy</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.loaders.html">Loaders - celery.loaders</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.loaders.base.html">Loader Base Classes - celery.loaders.base</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.loaders.default.html">Default Loader - celery.loaders.default</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.loaders.djangoapp.html">Django Loader - celery.loaders.djangoapp</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.discovery.html">Task Discovery - celery.discovery</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.monitoring.html">Statistics and Monitoring - celery.monitoring</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.messaging.html">Messaging - celery.messaging</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.worker.html">Multiprocessing Worker - celery.worker</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.worker.job.html">Executable Jobs - celery.worker.job</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.worker.controllers.html">Worker Controller Threads - celery.worker.controllers</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.pool.html">Task Pool - celery.pool</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.supervisor.html">Process Supervisor - celery.supervisor</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.backends.html">Backends - celery.backends</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.backends.base.html">Backend: Base - celery.backends.base</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.backends.database.html">Backend: Database - celery.backends.database</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.backends.cache.html">Backend: Cache - celery.backends.cache</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.backends.amqp.html">Backend: AMQP - celery.backends.amqp</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.backends.tyrant.html">Backend: Tokyo Tyrant - celery.backends.tyrant</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.conf.html">Configuration - celery.conf</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.datastructures.html">Datastructures - celery.datastructures</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.log.html">Logging - celery.log</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.utils.html">Multiprocessing Worker - celery.worker</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.views.html">Django Views - celery.views</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.managers.html">Django Model Managers - celery.managers</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.models.html">Django Models - celery.models</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.fields.html">Django Fields - celery.fields</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.bin.celeryd.html">Celery Worker Daemon - celery.bin.celeryd</a></li>
+<li class="toctree-l2"><a class="reference external" href="reference/celery.bin.celeryinit.html">Celery Initialize - celery.bin.celeryinit</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="changelog.html">Change history</a><ul>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#a-m-cet">0.6.0 [2009-08-07 06:54 A.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#p-m-cet">0.4.1 [2009-07-02 01:42 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id1">0.4.0 [2009-07-01 07:29 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id2">0.3.20 [2009-06-25 08:42 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id3">0.3.7 [2008-06-16 11:41 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id4">0.3.3 [2009-06-08 01:07 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id5">0.3.2 [2009-06-08 01:07 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id6">0.3.1 [2009-06-08 01:07 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id7">0.3.0 [2009-06-08 12:41 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id8">0.2.0 [2009-05-20 05:14 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#pre3-2009-05-20-05-14-p-m-cet">0.2.0-pre3 [2009-05-20 05:14 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#pre2-2009-05-20-01-56-p-m-cet">0.2.0-pre2 [2009-05-20 01:56 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#pre1-2009-05-20-12-33-p-m-cet">0.2.0-pre1 [2009-05-20 12:33 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id9">0.1.15 [2009-05-19 04:13 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id10">0.1.14 [2009-05-19 01:08 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id11">0.1.13 [2009-05-19 12:36 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id12">0.1.12 [2009-05-18 04:38 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id13">0.1.11 [2009-05-12 02:08 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id14">0.1.10 [2009-05-11 12:46 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id15">0.1.8 [2009-05-07 12:27 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id16">0.1.7 [2009-04-30 1:50 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id17">0.1.6 [2009-04-28 2:13 P.M CET]</a></li>
+<li class="toctree-l2"><a class="reference external" href="changelog.html#id18">0.1.0 [2009-04-24 11:28 A.M CET]</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="links.html">Interesting Links</a><ul>
+<li class="toctree-l2"><a class="reference external" href="links.html#celery">celery</a></li>
+<li class="toctree-l2"><a class="reference external" href="links.html#amqp">AMQP</a></li>
+<li class="toctree-l2"><a class="reference external" href="links.html#rabbitmq">RabbitMQ</a></li>
+<li class="toctree-l2"><a class="reference external" href="links.html#non-relational-databases">Non-relational databases</a></li>
+</ul>
+</li>
+</ul>
+<div class="section" id="indices-and-tables">
+<h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="genindex.html"><em>Index</em></a></li>
+<li><a class="reference external" href="modindex.html"><em>Module Index</em></a></li>
+<li><a class="reference external" href="search.html"><em>Search Page</em></a></li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h3><a href="">Table Of Contents</a></h3>
+            <ul>
+<li><a class="reference external" href="">Celery - Distributed Task Queue</a><ul>
+<li><a class="reference external" href="#indices-and-tables">Indices and tables</a></li>
+</ul>
+</li>
+</ul>
+
+            <h4>Next topic</h4>
+            <p class="topless"><a href="introduction.html"
+                                  title="next chapter">celery - Distributed Task Queue for Django/Python</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="sources/index.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="introduction.html" title="celery - Distributed Task Queue for Django/Python"
+             >next</a> |</li>
+        <li><a href="">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 471 - 0
introduction.html

@@ -0,0 +1,471 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>celery - Distributed Task Queue for Django/Python &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="static/jquery.js"></script>
+    <script type="text/javascript" src="static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="index.html" />
+    <link rel="next" title="Cookbook" href="cookbook/index.html" />
+    <link rel="prev" title="Celery - Distributed Task Queue" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="cookbook/index.html" title="Cookbook"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Celery - Distributed Task Queue"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="celery-distributed-task-queue-for-django-python">
+<h1>celery - Distributed Task Queue for Django/Python<a class="headerlink" href="#celery-distributed-task-queue-for-django-python" title="Permalink to this headline">¶</a></h1>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Version:</th><td class="field-body">0.7.0</td>
+</tr>
+</tbody>
+</table>
+<div class="section" id="introduction">
+<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
+<p><strong>NOTE:</strong> See the FAQ for information about using celery outside of Django.</p>
+<p><tt class="docutils literal"><span class="pre">celery</span></tt> is a distributed task queue framework for Django/Python.</p>
+<p>It is used for executing tasks <em>asynchronously</em>, routed to one or more
+worker servers, running concurrently using multiprocessing.</p>
+<p>It is designed to solve certain problems related to running websites
+demanding high-availability and performance.</p>
+<p>It is perfect for filling caches, posting updates to twitter, mass
+downloading data like syndication feeds or web scraping. Use-cases are
+plentiful. Implementing these features asynchronously using <tt class="docutils literal"><span class="pre">celery</span></tt> is
+easy and fun, and the performance improvements can make it more than
+worthwhile.</p>
+</div>
+<div class="section" id="overview">
+<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
+<p>This is a high level overview of the architecture.</p>
+<img alt="http://cloud.github.com/downloads/ask/celery/Celery-Overview-v4.jpg" src="http://cloud.github.com/downloads/ask/celery/Celery-Overview-v4.jpg" />
+<p>The broker is an AMQP server pushing tasks to the worker servers.
+A worker server is a networked machine running <tt class="docutils literal"><span class="pre">celeryd</span></tt>. This can be one or
+more machines, depending on the workload. See <a class="reference internal" href="#a-look-inside-the-worker">A look inside the worker</a> to
+see how the worker server works.</p>
+<p>The result of the task can be stored for later retrieval (called its
+&#8220;tombstone&#8221;).</p>
+</div>
+<div class="section" id="features">
+<h2>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">Uses AMQP messaging (RabbitMQ, ZeroMQ, Qpid) to route tasks to the
+worker servers. Experimental support for STOMP (ActiveMQ) is also
+available.</p>
+</li>
+<li><p class="first">You can run as many worker servers as you want, and still
+be <em>guaranteed that the task is only executed once.</em></p>
+</li>
+<li><p class="first">Tasks are executed <em>concurrently</em> using the Python 2.6
+<tt class="docutils literal"><span class="pre">multiprocessing</span></tt> module (also available as a back-port
+to older python versions)</p>
+</li>
+<li><p class="first">Supports <em>periodic tasks</em>, which makes it a (better) replacement
+for cronjobs.</p>
+</li>
+<li><p class="first">When a task has been executed, the return value can be stored using
+either a MySQL/Oracle/PostgreSQL/SQLite database, Memcached,
+or Tokyo Tyrant back-end. For high-performance you can also use
+AMQP to publish results.</p>
+</li>
+<li><p class="first">If the task raises an exception, the exception instance is stored,
+instead of the return value.</p>
+</li>
+<li><p class="first">All tasks has a Universally Unique Identifier (UUID), which is the
+task id, used for querying task status and return values.</p>
+</li>
+<li><p class="first">Tasks can be retried if they fail, with a configurable maximum number
+of retries.</p>
+</li>
+<li><p class="first">Tasks can be configured to run at a specific time and date in the
+future (ETA) or you can set a countdown in seconds for when the
+task should be executed.</p>
+</li>
+<li><p class="first">Supports <em>task-sets</em>, which is a task consisting of several sub-tasks.
+You can find out how many, or if all of the sub-tasks has been executed.
+Excellent for progress-bar like functionality.</p>
+</li>
+<li><p class="first">Has a <tt class="docutils literal"><span class="pre">map</span></tt> like function that uses tasks, called <tt class="docutils literal"><span class="pre">dmap</span></tt>.</p>
+</li>
+<li><p class="first">However, you rarely want to wait for these results in a web-environment.
+You&#8217;d rather want to use Ajax to poll the task status, which is
+available from a URL like <tt class="docutils literal"><span class="pre">celery/&lt;task_id&gt;/status/</span></tt>. This view
+returns a JSON-serialized data structure containing the task status,
+and the return value if completed, or exception on failure.</p>
+</li>
+<li><p class="first">The worker can collect statistics, like, how many tasks has been
+executed by type, and the time it took to process them. Very useful
+for monitoring and profiling.</p>
+</li>
+<li><dl class="first docutils">
+<dt>Pool workers are supervised, so if for some reason a worker crashes</dt>
+<dd><p class="first last">it is automatically replaced by a new worker.</p>
+</dd>
+</dl>
+</li>
+<li><p class="first">Can be configured to send e-mails to the administrators when a task
+fails.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="api-reference-documentation">
+<h2>API Reference Documentation<a class="headerlink" href="#api-reference-documentation" title="Permalink to this headline">¶</a></h2>
+<p>The <a class="reference external" href="http://ask.github.com/celery/">API Reference</a> is hosted at Github
+(<a class="reference external" href="http://ask.github.com/celery">http://ask.github.com/celery</a>)</p>
+</div>
+<div class="section" id="installation">
+<h2>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h2>
+<p>You can install <tt class="docutils literal"><span class="pre">celery</span></tt> either via the Python Package Index (PyPI)
+or from source.</p>
+<p>To install using <tt class="docutils literal"><span class="pre">pip</span></tt>,:</p>
+<div class="highlight-python"><pre>$ pip install celery</pre>
+</div>
+<p>To install using <tt class="docutils literal"><span class="pre">easy_install</span></tt>,:</p>
+<div class="highlight-python"><pre>$ easy_install celery</pre>
+</div>
+<div class="section" id="downloading-and-installing-from-source">
+<h3>Downloading and installing from source<a class="headerlink" href="#downloading-and-installing-from-source" title="Permalink to this headline">¶</a></h3>
+<p>Download the latest version of <tt class="docutils literal"><span class="pre">celery</span></tt> from
+<a class="reference external" href="http://pypi.python.org/pypi/celery/">http://pypi.python.org/pypi/celery/</a></p>
+<p>You can install it by doing the following,:</p>
+<div class="highlight-python"><pre>$ tar xvfz celery-0.0.0.tar.gz
+$ cd celery-0.0.0
+$ python setup.py build
+# python setup.py install # as root</pre>
+</div>
+</div>
+<div class="section" id="using-the-development-version">
+<h3>Using the development version<a class="headerlink" href="#using-the-development-version" title="Permalink to this headline">¶</a></h3>
+<p>You can clone the repository by doing the following:</p>
+<div class="highlight-python"><pre>$ git clone git://github.com/ask/celery.git</pre>
+</div>
+</div>
+</div>
+<div class="section" id="usage">
+<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="installing-rabbitmq">
+<h3>Installing RabbitMQ<a class="headerlink" href="#installing-rabbitmq" title="Permalink to this headline">¶</a></h3>
+<p>See <a class="reference external" href="http://www.rabbitmq.com/install.html">Installing RabbitMQ</a> over at RabbitMQ&#8217;s website. For Mac OS X
+see <a class="reference external" href="http://playtype.net/past/2008/10/9/installing_rabbitmq_on_osx/">Installing RabbitMQ on OS X</a>.</p>
+</div>
+<div class="section" id="setting-up-rabbitmq">
+<h3>Setting up RabbitMQ<a class="headerlink" href="#setting-up-rabbitmq" title="Permalink to this headline">¶</a></h3>
+<p>To use celery we need to create a RabbitMQ user, a virtual host and
+allow that user access to that virtual host:</p>
+<div class="highlight-python"><pre>$ rabbitmqctl add_user myuser mypassword
+
+$ rabbitmqctl add_vhost myvhost</pre>
+</div>
+<p>From RabbitMQ version 1.6.0 and onward you have to use the new ACL features
+to allow access:</p>
+<div class="highlight-python"><pre>$ rabbitmqctl set_permissions -p myvhost myuser "" ".*" ".*"</pre>
+</div>
+<p>See the RabbitMQ <a class="reference external" href="http://www.rabbitmq.com/admin-guide.html">Admin Guide</a> for more information about <a class="reference external" href="http://www.rabbitmq.com/admin-guide.html#access-control">access control</a>.</p>
+<p>If you are still using version 1.5.0 or below, please use <tt class="docutils literal"><span class="pre">map_user_vhost</span></tt>:</p>
+<div class="highlight-python"><pre>$ rabbitmqctl map_user_vhost myuser myvhost</pre>
+</div>
+</div>
+<div class="section" id="configuring-your-django-project-to-use-celery">
+<h3>Configuring your Django project to use Celery<a class="headerlink" href="#configuring-your-django-project-to-use-celery" title="Permalink to this headline">¶</a></h3>
+<p>You only need three simple steps to use celery with your Django project.</p>
+<ol class="arabic">
+<li><p class="first">Add <tt class="docutils literal"><span class="pre">celery</span></tt> to <tt class="docutils literal"><span class="pre">INSTALLED_APPS</span></tt>.</p>
+</li>
+<li><p class="first">Create the celery database tables:</p>
+<div class="highlight-python"><pre>$ python manage.py syncdb</pre>
+</div>
+</li>
+<li><dl class="first docutils">
+<dt>Configure celery to use the AMQP user and virtual host we created</dt>
+<dd><p class="first">before, by adding the following to your <tt class="docutils literal"><span class="pre">settings.py</span></tt>:</p>
+<div class="last highlight-python"><div class="highlight"><pre><span class="n">AMQP_SERVER</span> <span class="o">=</span> <span class="s">&quot;localhost&quot;</span>
+<span class="n">AMQP_PORT</span> <span class="o">=</span> <span class="mf">5672</span>
+<span class="n">AMQP_USER</span> <span class="o">=</span> <span class="s">&quot;myuser&quot;</span>
+<span class="n">AMQP_PASSWORD</span> <span class="o">=</span> <span class="s">&quot;mypassword&quot;</span>
+<span class="n">AMQP_VHOST</span> <span class="o">=</span> <span class="s">&quot;myvhost&quot;</span>
+</pre></div>
+</div>
+</dd>
+</dl>
+</li>
+</ol>
+<p>That&#8217;s it.</p>
+<p>There are more options available, like how many processes you want to process
+work in parallel (the <tt class="docutils literal"><span class="pre">CELERY_CONCURRENCY</span></tt> setting), and the backend used
+for storing task statuses. But for now, this should do. For all of the options
+available, please consult the <a class="reference external" href="http://ask.github.com/celery/">API Reference</a></p>
+<p><strong>Note</strong>: If you&#8217;re using SQLite as the Django database back-end,
+<tt class="docutils literal"><span class="pre">celeryd</span></tt> will only be able to process one task at a time, this is
+because SQLite doesn&#8217;t allow concurrent writes.</p>
+</div>
+<div class="section" id="running-the-celery-worker-server">
+<h3>Running the celery worker server<a class="headerlink" href="#running-the-celery-worker-server" title="Permalink to this headline">¶</a></h3>
+<p>To test this we&#8217;ll be running the worker server in the foreground, so we can
+see what&#8217;s going on without consulting the logfile:</p>
+<div class="highlight-python"><pre>$ python manage.py celeryd</pre>
+</div>
+<p>However, in production you probably want to run the worker in the
+background, as a daemon:</p>
+<div class="highlight-python"><pre>$ python manage.py celeryd --detach</pre>
+</div>
+<p>For a complete listing of the command line arguments available, with a short
+description, you can use the help command:</p>
+<div class="highlight-python"><pre>$ python manage.py help celeryd</pre>
+</div>
+</div>
+<div class="section" id="defining-and-executing-tasks">
+<h3>Defining and executing tasks<a class="headerlink" href="#defining-and-executing-tasks" title="Permalink to this headline">¶</a></h3>
+<p><strong>Please note</strong> All of these tasks has to be stored in a real module, they can&#8217;t
+be defined in the python shell or ipython/bpython. This is because the celery
+worker server needs access to the task function to be able to run it.
+So while it looks like we use the python shell to define the tasks in these
+examples, you can&#8217;t do it this way. Put them in the <tt class="docutils literal"><span class="pre">tasks</span></tt> module of your
+Django application. The worker server will automatically load any <tt class="docutils literal"><span class="pre">tasks.py</span></tt>
+file for all of the applications listed in <tt class="docutils literal"><span class="pre">settings.INSTALLED_APPS</span></tt>.
+Executing tasks using <tt class="docutils literal"><span class="pre">delay</span></tt> and <tt class="docutils literal"><span class="pre">apply_async</span></tt> can be done from the
+python shell, but keep in mind that since arguments are pickled, you can&#8217;t
+use custom classes defined in the shell session.</p>
+<p>While you can use regular functions, the recommended way is to define
+a task class. This way you can cleanly upgrade the task to use the more
+advanced features of celery later.</p>
+<p>This is a task that basically does nothing but take some arguments,
+and return a value:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">Task</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.registry</span> <span class="kn">import</span> <span class="n">tasks</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyTask</span><span class="p">(</span><span class="n">Task</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">some_arg</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">logger</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_logger</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Did something: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">some_arg</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="mf">42</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tasks</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">MyTask</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Now if we want to execute this task, we can use the <tt class="docutils literal"><span class="pre">delay</span></tt> method of the
+task class (this is a handy shortcut to the <tt class="docutils literal"><span class="pre">apply_async</span></tt> method which gives
+you greater control of the task execution).</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">myapp.tasks</span> <span class="kn">import</span> <span class="n">MyTask</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">MyTask</span><span class="o">.</span><span class="n">delay</span><span class="p">(</span><span class="n">some_arg</span><span class="o">=</span><span class="s">&quot;foo&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>At this point, the task has been sent to the message broker. The message
+broker will hold on to the task until a celery worker server has successfully
+picked it up.</p>
+<p><em>Note</em> If everything is just hanging when you execute <tt class="docutils literal"><span class="pre">delay</span></tt>, please check
+that RabbitMQ is running, and that the user/password has access to the virtual
+host you configured earlier.</p>
+<p>Right now we have to check the celery worker logfiles to know what happened with
+the task. This is because we didn&#8217;t keep the <tt class="docutils literal"><span class="pre">AsyncResult</span></tt> object returned
+by <tt class="docutils literal"><span class="pre">delay</span></tt>.</p>
+<p>The <tt class="docutils literal"><span class="pre">AsyncResult</span></tt> lets us find the state of the task, wait for the task to
+finish and get its return value (or exception if the task failed).</p>
+<p>So, let&#8217;s execute the task again, but this time we&#8217;ll keep track of the task:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">MyTask</span><span class="o">.</span><span class="n">delay</span><span class="p">(</span><span class="s">&quot;do_something&quot;</span><span class="p">,</span> <span class="n">some_arg</span><span class="o">=</span><span class="s">&quot;foo bar baz&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">ready</span><span class="p">()</span> <span class="c"># returns True if the task has finished processing.</span>
+<span class="go">False</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">result</span> <span class="c"># task is not ready, so no return value yet.</span>
+<span class="go">None</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>   <span class="c"># Waits until the task is done and return the retval.</span>
+<span class="go">42</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">result</span>
+<span class="go">42</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">successful</span><span class="p">()</span> <span class="c"># returns True if the task didn&#39;t end in failure.</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>If the task raises an exception, the <tt class="docutils literal"><span class="pre">result.success()</span></tt> will be <tt class="xref docutils literal"><span class="pre">False</span></tt>,
+and <tt class="docutils literal"><span class="pre">result.result</span></tt> will contain the exception instance raised.</p>
+</div>
+<div class="section" id="auto-discovery-of-tasks">
+<h3>Auto-discovery of tasks<a class="headerlink" href="#auto-discovery-of-tasks" title="Permalink to this headline">¶</a></h3>
+<p><tt class="docutils literal"><span class="pre">celery</span></tt> has an auto-discovery feature like the Django Admin, that
+automatically loads any <tt class="docutils literal"><span class="pre">tasks.py</span></tt> module in the applications listed
+in <tt class="docutils literal"><span class="pre">settings.INSTALLED_APPS</span></tt>. This autodiscovery is used by the celery
+worker to find registered tasks for your Django project.</p>
+</div>
+<div class="section" id="periodic-tasks">
+<h3>Periodic Tasks<a class="headerlink" href="#periodic-tasks" title="Permalink to this headline">¶</a></h3>
+<p>Periodic tasks are tasks that are run every <tt class="docutils literal"><span class="pre">n</span></tt> seconds.
+Here&#8217;s an example of a periodic task:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">PeriodicTask</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.registry</span> <span class="kn">import</span> <span class="n">tasks</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">timedelta</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyPeriodicTask</span><span class="p">(</span><span class="n">PeriodicTask</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="n">run_every</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="mf">30</span><span class="p">)</span>
+<span class="gp">...</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">logger</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_logger</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Running periodic task!&quot;</span><span class="p">)</span>
+<span class="gp">...</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tasks</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">MyPeriodicTask</span><span class="p">)</span>
+</pre></div>
+</div>
+<p><strong>Note:</strong> Periodic tasks does not support arguments, as this doesn&#8217;t
+really make sense.</p>
+</div>
+</div>
+<div class="section" id="a-look-inside-the-worker">
+<h2>A look inside the worker<a class="headerlink" href="#a-look-inside-the-worker" title="Permalink to this headline">¶</a></h2>
+<img alt="http://cloud.github.com/downloads/ask/celery/InsideTheWorker-v2.jpg" src="http://cloud.github.com/downloads/ask/celery/InsideTheWorker-v2.jpg" />
+</div>
+<div class="section" id="getting-help">
+<h2>Getting Help<a class="headerlink" href="#getting-help" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="mailing-list">
+<h3>Mailing list<a class="headerlink" href="#mailing-list" title="Permalink to this headline">¶</a></h3>
+<p>For discussions about the usage, development, and future of celery,
+please join the <a class="reference external" href="http://groups.google.com/group/celery-users/">celery-users</a> mailing list.</p>
+</div>
+<div class="section" id="irc">
+<h3>IRC<a class="headerlink" href="#irc" title="Permalink to this headline">¶</a></h3>
+<p>Come chat with us on IRC. The <a class="reference external" href="irc://irc.freenode.net/celery">#celery</a> channel is located at the <a class="reference external" href="http://freenode.net">Freenode</a>
+network.</p>
+</div>
+</div>
+<div class="section" id="bug-tracker">
+<h2>Bug tracker<a class="headerlink" href="#bug-tracker" title="Permalink to this headline">¶</a></h2>
+<p>If you have any suggestions, bug reports or annoyances please report them
+to our issue tracker at <a class="reference external" href="http://github.com/ask/celery/issues/">http://github.com/ask/celery/issues/</a></p>
+</div>
+<div class="section" id="contributing">
+<h2>Contributing<a class="headerlink" href="#contributing" title="Permalink to this headline">¶</a></h2>
+<p>Development of <tt class="docutils literal"><span class="pre">celery</span></tt> happens at Github: <a class="reference external" href="http://github.com/ask/celery">http://github.com/ask/celery</a></p>
+<p>You are highly encouraged to participate in the development
+of <tt class="docutils literal"><span class="pre">celery</span></tt>. If you don&#8217;t like Github (for some reason) you&#8217;re welcome
+to send regular patches.</p>
+</div>
+<div class="section" id="license">
+<h2>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h2>
+<p>This software is licensed under the <tt class="docutils literal"><span class="pre">New</span> <span class="pre">BSD</span> <span class="pre">License</span></tt>. See the <tt class="docutils literal"><span class="pre">LICENSE</span></tt>
+file in the top distribution directory for the full license text.</p>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h3><a href="index.html">Table Of Contents</a></h3>
+            <ul>
+<li><a class="reference external" href="">celery - Distributed Task Queue for Django/Python</a><ul>
+<li><a class="reference external" href="#introduction">Introduction</a></li>
+<li><a class="reference external" href="#overview">Overview</a></li>
+<li><a class="reference external" href="#features">Features</a></li>
+<li><a class="reference external" href="#api-reference-documentation">API Reference Documentation</a></li>
+<li><a class="reference external" href="#installation">Installation</a><ul>
+<li><a class="reference external" href="#downloading-and-installing-from-source">Downloading and installing from source</a></li>
+<li><a class="reference external" href="#using-the-development-version">Using the development version</a></li>
+</ul>
+</li>
+<li><a class="reference external" href="#usage">Usage</a><ul>
+<li><a class="reference external" href="#installing-rabbitmq">Installing RabbitMQ</a></li>
+<li><a class="reference external" href="#setting-up-rabbitmq">Setting up RabbitMQ</a></li>
+<li><a class="reference external" href="#configuring-your-django-project-to-use-celery">Configuring your Django project to use Celery</a></li>
+<li><a class="reference external" href="#running-the-celery-worker-server">Running the celery worker server</a></li>
+<li><a class="reference external" href="#defining-and-executing-tasks">Defining and executing tasks</a></li>
+<li><a class="reference external" href="#auto-discovery-of-tasks">Auto-discovery of tasks</a></li>
+<li><a class="reference external" href="#periodic-tasks">Periodic Tasks</a></li>
+</ul>
+</li>
+<li><a class="reference external" href="#a-look-inside-the-worker">A look inside the worker</a></li>
+<li><a class="reference external" href="#getting-help">Getting Help</a><ul>
+<li><a class="reference external" href="#mailing-list">Mailing list</a></li>
+<li><a class="reference external" href="#irc">IRC</a></li>
+</ul>
+</li>
+<li><a class="reference external" href="#bug-tracker">Bug tracker</a></li>
+<li><a class="reference external" href="#contributing">Contributing</a></li>
+<li><a class="reference external" href="#license">License</a></li>
+</ul>
+</li>
+</ul>
+
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="index.html"
+                                  title="previous chapter">Celery - Distributed Task Queue</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="cookbook/index.html"
+                                  title="next chapter">Cookbook</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="sources/introduction.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="cookbook/index.html" title="Cookbook"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Celery - Distributed Task Queue"
+             >previous</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 170 - 0
links.html

@@ -0,0 +1,170 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Interesting Links &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="static/jquery.js"></script>
+    <script type="text/javascript" src="static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="index.html" />
+    <link rel="prev" title="Change history" href="changelog.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="changelog.html" title="Change history"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="interesting-links">
+<h1>Interesting Links<a class="headerlink" href="#interesting-links" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="celery">
+<h2>celery<a class="headerlink" href="#celery" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><dl class="first docutils">
+<dt>IRC logs from <tt class="docutils literal"><span class="pre">#celery</span></tt> (Freenode):</dt>
+<dd><p class="first last"><a class="reference external" href="http://botland.oebfare.com/logger/celery/">http://botland.oebfare.com/logger/celery/</a></p>
+</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="section" id="amqp">
+<h2>AMQP<a class="headerlink" href="#amqp" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="http://botland.oebfare.com/logger/celery/">Shovel</a>: An AMQP Relay</li>
+</ul>
+</div>
+<div class="section" id="rabbitmq">
+<h2>RabbitMQ<a class="headerlink" href="#rabbitmq" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><dl class="first docutils">
+<dt><a class="reference external" href="http://github.com/aaronfeng/trixx/tree/master">Trixx</a>: Administration and Monitoring tool for <a class="reference external" href="http://rabbitmq.com/">RabbitMQ</a> (in</dt>
+<dd><p class="first last">development).</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt><a class="reference external" href="http://github.com/gmr/Cony/tree/master">Cony</a>: HTTP based service for providing insight into running</dt>
+<dd><p class="first last"><a class="reference external" href="http://rabbitmq.com/">RabbitMQ</a> processes.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt><a class="reference external" href="http://github.com/ask/rabbitmq-munin/">RabbitMQ Munin Plug-ins</a>: Use <a class="reference external" href="http://munin.projects.linpro.no/">Munin</a> to monitor <a class="reference external" href="http://rabbitmq.com/">RabbitMQ</a>, and alert</dt>
+<dd><p class="first last">on critical events.</p>
+</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="section" id="non-relational-databases">
+<h2>Non-relational databases<a class="headerlink" href="#non-relational-databases" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first"><a class="reference external" href="http://couchdb.org">CouchDB</a>: Document database.</p>
+</li>
+<li><p class="first"><a class="reference external" href="http://incubator.apache.org/cassandra/">Cassandra</a>: Distributed and structured key-value store.</p>
+</li>
+<li><p class="first"><a class="reference external" href="http://discoproject.org">Disco</a>: <a class="reference external" href="http://en.wikipedia.org/wiki/MapReduce">Map/Reduce</a> framework.</p>
+</li>
+<li><dl class="first docutils">
+<dt><a class="reference external" href="http://tokyocabinet.sourceforge.net/">Tokyo Cabinet</a>/<a class="reference external" href="http://tokyocabinet.sourceforge.net/tyrantdoc/">Tokyo Tyrant</a>: Modern and fast (networked) DBM-</dt>
+<dd><p class="first last">implementation.</p>
+</dd>
+</dl>
+</li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h3><a href="index.html">Table Of Contents</a></h3>
+            <ul>
+<li><a class="reference external" href="">Interesting Links</a><ul>
+<li><a class="reference external" href="#celery">celery</a></li>
+<li><a class="reference external" href="#amqp">AMQP</a></li>
+<li><a class="reference external" href="#rabbitmq">RabbitMQ</a></li>
+<li><a class="reference external" href="#non-relational-databases">Non-relational databases</a></li>
+</ul>
+</li>
+</ul>
+
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="changelog.html"
+                                  title="previous chapter">Change history</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="sources/links.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="changelog.html" title="Change history"
+             >previous</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 244 - 0
modindex.html

@@ -0,0 +1,244 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Global Module Index &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="static/jquery.js"></script>
+    <script type="text/javascript" src="static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="index.html" />
+ 
+
+
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+
+   <h1 id="global-module-index">Global Module Index</h1>
+   <a href="#cap-C"><strong>C</strong></a> 
+   <hr/>
+
+   <table width="100%" class="indextable" cellspacing="0" cellpadding="2"><tr class="pcap"><td></td><td>&nbsp;</td><td></td></tr>
+   <tr class="cap"><td></td><td><a name="cap-C"><strong>C</strong></a></td><td></td></tr><tr>
+     <td><img src="static/minus.png" id="toggle-1"
+            class="toggler" style="display: none" alt="-" /></td>
+     <td>
+     <tt class="xref">celery</tt></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.backends.html#module-celery.backends"><tt class="xref">celery.backends</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.backends.amqp.html#module-celery.backends.amqp"><tt class="xref">celery.backends.amqp</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.backends.base.html#module-celery.backends.base"><tt class="xref">celery.backends.base</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.backends.cache.html#module-celery.backends.cache"><tt class="xref">celery.backends.cache</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.backends.database.html#module-celery.backends.database"><tt class="xref">celery.backends.database</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.backends.tyrant.html#module-celery.backends.tyrant"><tt class="xref">celery.backends.tyrant</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.bin.celeryd.html#module-celery.bin.celeryd"><tt class="xref">celery.bin.celeryd</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.bin.celeryinit.html#module-celery.bin.celeryinit"><tt class="xref">celery.bin.celeryinit</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.conf.html#module-celery.conf"><tt class="xref">celery.conf</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.datastructures.html#module-celery.datastructures"><tt class="xref">celery.datastructures</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.discovery.html#module-celery.discovery"><tt class="xref">celery.discovery</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.exceptions.html#module-celery.exceptions"><tt class="xref">celery.exceptions</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.execute.html#module-celery.execute"><tt class="xref">celery.execute</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.fields.html#module-celery.fields"><tt class="xref">celery.fields</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.loaders.html#module-celery.loaders"><tt class="xref">celery.loaders</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.loaders.base.html#module-celery.loaders.base"><tt class="xref">celery.loaders.base</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.loaders.default.html#module-celery.loaders.default"><tt class="xref">celery.loaders.default</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.loaders.djangoapp.html#module-celery.loaders.djangoapp"><tt class="xref">celery.loaders.djangoapp</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.log.html#module-celery.log"><tt class="xref">celery.log</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.managers.html#module-celery.managers"><tt class="xref">celery.managers</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.messaging.html#module-celery.messaging"><tt class="xref">celery.messaging</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.monitoring.html#module-celery.monitoring"><tt class="xref">celery.monitoring</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.pool.html#module-celery.pool"><tt class="xref">celery.pool</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.registry.html#module-celery.registry"><tt class="xref">celery.registry</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.result.html#module-celery.result"><tt class="xref">celery.result</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.signals.html#module-celery.signals"><tt class="xref">celery.signals</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.supervisor.html#module-celery.supervisor"><tt class="xref">celery.supervisor</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.task.html#module-celery.task"><tt class="xref">celery.task</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.task.base.html#module-celery.task.base"><tt class="xref">celery.task.base</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.task.builtins.html#module-celery.task.builtins"><tt class="xref">celery.task.builtins</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.task.strategy.html#module-celery.task.strategy"><tt class="xref">celery.task.strategy</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.utils.html#module-celery.utils"><tt class="xref">celery.utils</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.views.html#module-celery.views"><tt class="xref">celery.views</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.worker.html#module-celery.worker"><tt class="xref">celery.worker</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.worker.controllers.html#module-celery.worker.controllers"><tt class="xref">celery.worker.controllers</tt></a></td><td>
+     <em></em></td></tr><tr class="cg-1">
+     <td></td>
+     <td>&nbsp;&nbsp;&nbsp;
+     <a href="reference/celery.worker.job.html#module-celery.worker.job"><tt class="xref">celery.worker.job</tt></a></td><td>
+     <em></em></td></tr>
+   </table>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="" title="Global Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 398 - 0
objects.inv

@@ -0,0 +1,398 @@
+# Sphinx inventory version 1
+# Project: Celery
+# Version: 0.7
+celery.backends.base mod reference/celery.backends.base.html
+celery.exceptions mod reference/celery.exceptions.html
+celery.execute mod reference/celery.execute.html
+celery.task.strategy mod reference/celery.task.strategy.html
+celery.loaders.djangoapp mod reference/celery.loaders.djangoapp.html
+celery.bin.celeryd mod reference/celery.bin.celeryd.html
+celery.discovery mod reference/celery.discovery.html
+celery.backends.tyrant mod reference/celery.backends.tyrant.html
+celery.task.builtins mod reference/celery.task.builtins.html
+celery.monitoring mod reference/celery.monitoring.html
+celery.pool mod reference/celery.pool.html
+celery.managers mod reference/celery.managers.html
+celery.signals mod reference/celery.signals.html
+celery.log mod reference/celery.log.html
+celery.backends.database mod reference/celery.backends.database.html
+celery.utils mod reference/celery.utils.html
+celery.supervisor mod reference/celery.supervisor.html
+celery.backends mod reference/celery.backends.html
+celery.loaders.base mod reference/celery.loaders.base.html
+celery.worker mod reference/celery.worker.html
+celery.bin.celeryinit mod reference/celery.bin.celeryinit.html
+celery.backends.cache mod reference/celery.backends.cache.html
+celery.datastructures mod reference/celery.datastructures.html
+celery.messaging mod reference/celery.messaging.html
+celery.backends.amqp mod reference/celery.backends.amqp.html
+celery.task.base mod reference/celery.task.base.html
+celery.loaders mod reference/celery.loaders.html
+celery.loaders.default mod reference/celery.loaders.default.html
+celery.task mod reference/celery.task.html
+celery.views mod reference/celery.views.html
+celery.worker.job mod reference/celery.worker.job.html
+celery.conf mod reference/celery.conf.html
+celery.registry mod reference/celery.registry.html
+celery.result mod reference/celery.result.html
+celery.fields mod reference/celery.fields.html
+celery.worker.controllers mod reference/celery.worker.controllers.html
+celery.supervisor.OFASupervisor.Process.exitcode attribute reference/celery.supervisor.html
+celery.backends.base.BaseBackend.mark_as_done method reference/celery.backends.base.html
+celery.worker.controllers.BackgroundThread.on_stop method reference/celery.worker.controllers.html
+celery.result.TaskSetResult.iterate method reference/celery.result.html
+celery.supervisor.OFASupervisor.Process.run method reference/celery.supervisor.html
+celery.task.base.AsynchronousMapTask class reference/celery.task.base.html
+celery.result.BaseAsyncResult.backend attribute reference/celery.result.html
+celery.fields.PickledObjectField.get_internal_type method reference/celery.fields.html
+celery.worker.WorkController class reference/celery.worker.html
+celery.worker.WorkController.logfile attribute reference/celery.worker.html
+celery.result.BaseAsyncResult.ready method reference/celery.result.html
+celery.managers.TaskManager.delete_expired method reference/celery.managers.html
+celery.datastructures.ExceptionInfo.traceback attribute reference/celery.datastructures.html
+celery.managers.TaskManager.get_all_expired method reference/celery.managers.html
+celery.managers.table_lock attribute reference/celery.managers.html
+celery.task.strategy.even_time_distribution function reference/celery.task.strategy.html
+celery.execute.ExecuteWrapper.handle_success method reference/celery.execute.html
+celery.task.base.ExecuteRemoteTask.run method reference/celery.task.base.html
+celery.task.base.Task.retry method reference/celery.task.base.html
+celery.supervisor.OFASupervisor.start method reference/celery.supervisor.html
+celery.task.base.Task.get_logger method reference/celery.task.base.html
+celery.result.BaseAsyncResult.successful method reference/celery.result.html
+TASK_STATUS_RETRY data reference/celery.models.html
+celery.utils.gen_unique_id function reference/celery.utils.html
+celery.worker.WorkController.start method reference/celery.worker.html
+celery.worker.controllers.BackgroundThread.stop method reference/celery.worker.controllers.html
+celery.backends.base.BaseBackend.cleanup method reference/celery.backends.base.html
+celery.bin.celeryd.parse_options function reference/celery.bin.celeryd.html
+celery.task.discard_all function reference/celery.task.html
+celery.result.BaseAsyncResult.TimeoutError exception reference/celery.result.html
+celery.messaging.TaskPublisher class reference/celery.messaging.html
+celery.conf.AMQP_CONSUMER_ROUTING_KEY data reference/celery.conf.html
+celery.views.apply function reference/celery.views.html
+celery.worker.WorkController.periodic_work_controller attribute reference/celery.worker.html
+celery.registry.TaskRegistry.NotRegistered exception reference/celery.registry.html
+celery.datastructures.PositionQueue.length attribute reference/celery.datastructures.html
+celery.datastructures.PositionQueue class reference/celery.datastructures.html
+celery.backends.base.BaseBackend.prepare_result method reference/celery.backends.base.html
+celery.task.execute_remote function reference/celery.task.html
+celery.managers.TableLock.acquire classmethod reference/celery.managers.html
+celery.backends.base.BaseBackend.store_result method reference/celery.backends.base.html
+celery.monitoring.TimerStats.on_finish method reference/celery.monitoring.html
+celery.pool.TaskPool.on_ready method reference/celery.pool.html
+celery.task.base.TaskSet.total attribute reference/celery.task.base.html
+celery.task.base.PeriodicTask class reference/celery.task.base.html
+celery.managers.TaskManager.get_task method reference/celery.managers.html
+celery.loaders.djangoapp.Loader.read_configuration method reference/celery.loaders.djangoapp.html
+celery.conf.DAEMON_LOG_LEVEL data reference/celery.conf.html
+celery.task.builtins.PingTask.run method reference/celery.task.builtins.html
+celery.result.BaseAsyncResult.status attribute reference/celery.result.html
+celery.conf.DEFAULT_AMQP_CONNECTION_MAX_RETRIES data reference/celery.conf.html
+celery.monitoring.StatsCollector.total_task_time_running attribute reference/celery.monitoring.html
+TaskMeta.date_done attribute reference/celery.models.html
+celery.monitoring.StatsCollector.collect method reference/celery.monitoring.html
+celery.monitoring.StatsCollector.total_task_time_running_by_type attribute reference/celery.monitoring.html
+celery.backends.base.BaseBackend.is_done method reference/celery.backends.base.html
+celery.loaders.base.BaseLoader.on_task_init method reference/celery.loaders.base.html
+celery.task.base.TaskSet.map classmethod reference/celery.task.base.html
+celery.exceptions.MaxRetriesExceededError exception reference/celery.exceptions.html
+celery.backends.amqp.Backend.store_result method reference/celery.backends.amqp.html
+celery.worker.job.TaskWrapper.kwargs attribute reference/celery.worker.job.html
+celery.messaging.TaskPublisher.delay_task method reference/celery.messaging.html
+celery.worker.WorkController.is_detached attribute reference/celery.worker.html
+celery.result.BaseAsyncResult.traceback attribute reference/celery.result.html
+celery.task.base.TaskSet.map_async classmethod reference/celery.task.base.html
+celery.worker.AMQPListener.reset_connection method reference/celery.worker.html
+celery.loaders.djangoapp.Loader.on_task_init method reference/celery.loaders.djangoapp.html
+celery.execute.ExecuteWrapper.handle_retry method reference/celery.execute.html
+celery.fields.PickledObjectField.get_db_prep_save method reference/celery.fields.html
+celery.task.base.Task.exchange attribute reference/celery.task.base.html
+celery.worker.job.TaskWrapper class reference/celery.worker.job.html
+celery.worker.WorkController.concurrency attribute reference/celery.worker.html
+celery.supervisor.MaxRestartsExceededError exception reference/celery.supervisor.html
+celery.pool.pid_is_dead function reference/celery.pool.html
+celery.monitoring.Statistics.publish method reference/celery.monitoring.html
+celery.monitoring.Statistics.on_stop method reference/celery.monitoring.html
+celery.worker.WorkController.hold_queue attribute reference/celery.worker.html
+celery.worker.job.TaskWrapper.from_message classmethod reference/celery.worker.job.html
+celery.execute.delay_task function reference/celery.execute.html
+celery.backends.base.BaseBackend.process_cleanup method reference/celery.backends.base.html
+celery.backends.base.BaseBackend.get_traceback method reference/celery.backends.base.html
+celery.task.base.ExecuteRemoteTask class reference/celery.task.base.html
+celery.worker.controllers.BackgroundThread class reference/celery.worker.controllers.html
+celery.worker.WorkController.logger attribute reference/celery.worker.html
+celery.monitoring.StatsCollector.report method reference/celery.monitoring.html
+celery.loaders.default.Loader class reference/celery.loaders.default.html
+celery.task.base.Task.max_retries attribute reference/celery.task.base.html
+celery.monitoring.StatsCollector.total_tasks_processed attribute reference/celery.monitoring.html
+celery.backends.base.BaseBackend.get_status method reference/celery.backends.base.html
+celery.supervisor.OFASupervisor.Process.start method reference/celery.supervisor.html
+celery.managers.MySQLTableLock.lock_table method reference/celery.managers.html
+celery.supervisor.OFASupervisor.Process.terminate method reference/celery.supervisor.html
+celery.execute.apply function reference/celery.execute.html
+celery.backends.base.BaseBackend.get_result method reference/celery.backends.base.html
+celery.datastructures.SharedCounter.increment method reference/celery.datastructures.html
+celery.result.EagerResult.wait method reference/celery.result.html
+celery.result.BaseAsyncResult.is_done method reference/celery.result.html
+celery.conf.LOG_LEVELS data reference/celery.conf.html
+celery.result.TaskSetResult.successful method reference/celery.result.html
+celery.result.TaskSetResult class reference/celery.result.html
+celery.result.EagerResult.is_done method reference/celery.result.html
+celery.monitoring.TimerStats.time_start attribute reference/celery.monitoring.html
+celery.worker.job.TaskWrapper.task_func attribute reference/celery.worker.job.html
+celery.pool.TaskPool class reference/celery.pool.html
+celery.discovery.autodiscover function reference/celery.discovery.html
+celery.backends.amqp.Backend.is_done method reference/celery.backends.amqp.html
+celery.result.EagerResult class reference/celery.result.html
+celery.worker.controllers.PeriodicWorkController.process_hold_queue method reference/celery.worker.controllers.html
+celery.result.TaskSetResult.total attribute reference/celery.result.html
+celery.task.ping function reference/celery.task.html
+celery.supervisor.OFASupervisor.target attribute reference/celery.supervisor.html
+celery.fields.PickledObject class reference/celery.fields.html
+celery.utils.mitemgetter function reference/celery.utils.html
+celery.worker.WorkController.process_task method reference/celery.worker.html
+celery.monitoring.StatsCollector class reference/celery.monitoring.html
+celery.supervisor.OFASupervisor.Process class reference/celery.supervisor.html
+celery.registry.TaskRegistry.get_all_periodic method reference/celery.registry.html
+celery.task.base.Task.on_success method reference/celery.task.base.html
+celery.utils.repeatlast function reference/celery.utils.html
+celery.loaders.default.Loader.on_worker_init method reference/celery.loaders.default.html
+celery.worker.job.TaskWrapper.on_success method reference/celery.worker.job.html
+celery.supervisor.OFASupervisor.Process.is_alive method reference/celery.supervisor.html
+celery.task.base.AsynchronousMapTask.run method reference/celery.task.base.html
+celery.pool.DynamicPool.grow method reference/celery.pool.html
+celery.backends.base.BaseBackend class reference/celery.backends.base.html
+celery.conf.AMQP_EXCHANGE_TYPE data reference/celery.conf.html
+celery.exceptions.AlreadyRegistered exception reference/celery.exceptions.html
+celery.backends.base.BaseBackend.prepare_exception method reference/celery.backends.base.html
+celery.task.base.Task.run method reference/celery.task.base.html
+celery.backends.amqp.Backend class reference/celery.backends.amqp.html
+celery.managers.TaskManager class reference/celery.managers.html
+celery.worker.job.TaskWrapper.task_id attribute reference/celery.worker.job.html
+celery.utils.chunks function reference/celery.utils.html
+celery.datastructures.ExceptionInfo.exception attribute reference/celery.datastructures.html
+celery.supervisor.OFASupervisor.check_interval attribute reference/celery.supervisor.html
+celery.backends.database.Backend.cleanup method reference/celery.backends.database.html
+celery.worker.controllers.BackgroundThread.on_start method reference/celery.worker.controllers.html
+celery.backends.database.Backend class reference/celery.backends.database.html
+celery.task.builtins.PingTask class reference/celery.task.builtins.html
+celery.bin.celeryd.install_restart_signal_handler function reference/celery.bin.celeryd.html
+celery.conf.DAEMON_LOG_FILE data reference/celery.conf.html
+celery.worker.AMQPListener.consume_messages method reference/celery.worker.html
+celery.worker.job.TaskWrapper.message attribute reference/celery.worker.job.html
+celery.managers.TableLock.lock_table method reference/celery.managers.html
+celery.worker.controllers.BackgroundThread.run method reference/celery.worker.controllers.html
+celery.conf.STATISTICS_COLLECT_INTERVAL data reference/celery.conf.html
+celery.backends.tyrant.Backend.tyrant_port attribute reference/celery.backends.tyrant.html
+celery.result.BaseAsyncResult.task_id attribute reference/celery.result.html
+celery.fields.PickledObjectField class reference/celery.fields.html
+celery.pool.TaskPool.logger attribute reference/celery.pool.html
+celery.worker.AMQPListener.start method reference/celery.worker.html
+celery.worker.AMQPListener.close_connection method reference/celery.worker.html
+celery.worker.AMQPListener.receive_message method reference/celery.worker.html
+celery.task.base.Task.type attribute reference/celery.task.base.html
+celery.exceptions.RetryTaskError exception reference/celery.exceptions.html
+celery.worker.WorkController.bucket_queue attribute reference/celery.worker.html
+celery.task.base.Task class reference/celery.task.base.html
+TaskMeta.status attribute reference/celery.models.html
+celery.conf.ALWAYS_EAGER data reference/celery.conf.html
+celery.messaging.TaskPublisher.delay_task_in_set method reference/celery.messaging.html
+celery.result.EagerResult.is_ready method reference/celery.result.html
+celery.backends.base.BaseBackend.mark_as_retry method reference/celery.backends.base.html
+celery.datastructures.PositionQueue.filled attribute reference/celery.datastructures.html
+TASK_STATUS_DONE data reference/celery.models.html
+celery.conf.AMQP_PUBLISHER_ROUTING_KEY data reference/celery.conf.html
+celery.backends.cache.Backend class reference/celery.backends.cache.html
+celery.worker.controllers.PeriodicWorkController class reference/celery.worker.controllers.html
+celery.execute.ExecuteWrapper.handle_failure method reference/celery.execute.html
+celery.supervisor.OFASupervisor.Process.daemon attribute reference/celery.supervisor.html
+celery.conf.DAEMON_CONCURRENCY data reference/celery.conf.html
+celery.registry.TaskRegistry.get_all method reference/celery.registry.html
+celery.managers.MySQLTableLock class reference/celery.managers.html
+celery.datastructures.SharedCounter.decrement method reference/celery.datastructures.html
+celery.loaders.base.BaseLoader class reference/celery.loaders.base.html
+celery.task.base.Task.name attribute reference/celery.task.base.html
+celery.execute.apply_async function reference/celery.execute.html
+celery.worker.AMQPListener.bucket_queue attribute reference/celery.worker.html
+TaskMeta.result attribute reference/celery.models.html
+celery.backends.database.Backend.get_traceback method reference/celery.backends.database.html
+celery.conf.SEND_CELERY_TASK_ERROR_EMAILS data reference/celery.conf.html
+celery.task.dmap function reference/celery.task.html
+celery.backends.database.Backend.run_periodic_tasks method reference/celery.backends.database.html
+celery.supervisor.OFASupervisor class reference/celery.supervisor.html
+celery.fields.PickledObjectField.to_python method reference/celery.fields.html
+celery.worker.job.TaskWrapper.execute_using_pool method reference/celery.worker.job.html
+celery.messaging.TaskPublisher.encoder method reference/celery.messaging.html
+celery.task.base.TaskSet.join method reference/celery.task.base.html
+celery.datastructures.PositionQueue.full method reference/celery.datastructures.html
+celery.registry.TaskRegistry.AlreadyRegistered exception reference/celery.registry.html
+celery.conf.AMQP_CONSUMER_QUEUE data reference/celery.conf.html
+celery.monitoring.StatsCollector.task_time_running method reference/celery.monitoring.html
+PeriodicTaskMeta.total_run_count attribute reference/celery.models.html
+celery.result.TaskSetResult.ready method reference/celery.result.html
+celery.backends.get_default_backend_cls data reference/celery.backends.html
+celery.worker.job.TaskWrapper.args attribute reference/celery.worker.job.html
+celery.conf.AMQP_CONSUMER_QUEUES data reference/celery.conf.html
+celery.backends.get_default_periodicstatus_backend_cls function reference/celery.backends.html
+celery.backends.database.Backend.store_result method reference/celery.backends.database.html
+celery.monitoring.TaskTimerStats class reference/celery.monitoring.html
+PeriodicTaskMeta.task attribute reference/celery.models.html
+celery.result.EagerResult.traceback attribute reference/celery.result.html
+celery.worker.job.TaskWrapper.on_failure method reference/celery.worker.job.html
+PeriodicTaskMeta class reference/celery.models.html
+celery.utils.get_full_cls_name function reference/celery.utils.html
+celery.worker.job.TaskWrapper.extend_with_default_kwargs method reference/celery.worker.job.html
+celery.result.AsyncResult class reference/celery.result.html
+celery.datastructures.SharedCounter class reference/celery.datastructures.html
+celery.task.dmap_async function reference/celery.task.html
+celery.result.TaskSetResult.waiting method reference/celery.result.html
+celery.supervisor.OFASupervisor.Process.pid attribute reference/celery.supervisor.html
+celery.monitoring.StatsCollector.total_tasks_processed_by_type attribute reference/celery.monitoring.html
+celery.supervisor.OFASupervisor.max_restart_freq attribute reference/celery.supervisor.html
+TASK_STATUSES data reference/celery.models.html
+celery.conf.AMQP_CONNECTION_RETRY data reference/celery.conf.html
+celery.task.base.TaskSet class reference/celery.task.base.html
+PeriodicTaskMeta.delay method reference/celery.models.html
+celery.task.base.Task.default_retry_delay attribute reference/celery.task.base.html
+celery.conf.AMQP_CONNECTION_TIMEOUT data reference/celery.conf.html
+celery.backends.database.Backend.get_result method reference/celery.backends.database.html
+celery.supervisor.OFASupervisor.max_restart_freq_time attribute reference/celery.supervisor.html
+celery.backends.get_backend_cls function reference/celery.backends.html
+celery.conf.AMQP_CONNECTION_MAX_RETRIES data reference/celery.conf.html
+celery.monitoring.Statistics.stop method reference/celery.monitoring.html
+celery.registry.TaskRegistry.unregister method reference/celery.registry.html
+celery.pool.TaskPool.stop method reference/celery.pool.html
+celery.result.TaskSetResult.failed method reference/celery.result.html
+celery.worker.job.TaskWrapper.execute method reference/celery.worker.job.html
+celery.monitoring.Statistics.start classmethod reference/celery.monitoring.html
+celery.backends.base.BaseBackend.TimeoutError exception reference/celery.backends.base.html
+celery.managers.MySQLTableLock.unlock_table method reference/celery.managers.html
+celery.loaders.base.BaseLoader.on_worker_init method reference/celery.loaders.base.html
+celery.managers.PeriodicTaskManager.get_waiting_tasks method reference/celery.managers.html
+celery.pool.DynamicPool.replace_dead_workers method reference/celery.pool.html
+celery.registry.TaskRegistry.register method reference/celery.registry.html
+celery.registry.TaskRegistry class reference/celery.registry.html
+celery.backends.DefaultBackend class reference/celery.backends.html
+celery.task.base.Task.MaxRetriesExceededError exception reference/celery.task.base.html
+celery.loaders.base.BaseLoader.conf attribute reference/celery.loaders.base.html
+celery.worker.controllers.Mediator.bucket_queue attribute reference/celery.worker.controllers.html
+celery.monitoring.Statistics.type attribute reference/celery.monitoring.html
+celery.bin.celeryd.run_worker function reference/celery.bin.celeryd.html
+celery.result.AsyncResult.backend attribute reference/celery.result.html
+celery.result.BaseAsyncResult.result attribute reference/celery.result.html
+celery.task.base.Task.on_failure method reference/celery.task.base.html
+celery.backends.tyrant.Backend.tyrant_host attribute reference/celery.backends.tyrant.html
+celery.pool.TaskPool.start method reference/celery.pool.html
+celery.monitoring.TimerStats.on_start method reference/celery.monitoring.html
+celery.task.is_done function reference/celery.task.html
+celery.result.EagerResult.status attribute reference/celery.result.html
+celery.supervisor.OFASupervisor.kwargs attribute reference/celery.supervisor.html
+celery.worker.controllers.Mediator.callback attribute reference/celery.worker.controllers.html
+celery.messaging.TaskConsumer.decoder method reference/celery.messaging.html
+celery.task.base.Task.get_publisher method reference/celery.task.base.html
+celery.monitoring.StatsCollector.dump_to_cache method reference/celery.monitoring.html
+celery.backends.database.Backend.init_periodic_tasks method reference/celery.backends.database.html
+celery.fields.PickledObjectField.get_db_prep_lookup method reference/celery.fields.html
+TASK_STATUS_PENDING data reference/celery.models.html
+celery.result.EagerResult.TimeoutError exception reference/celery.result.html
+celery.managers.TableLock.unlock_table method reference/celery.managers.html
+celery.loaders.default.Loader.read_configuration method reference/celery.loaders.default.html
+celery.result.TaskSetResult.completed_count method reference/celery.result.html
+celery.exceptions.TimeoutError exception reference/celery.exceptions.html
+celery.messaging.TaskConsumer class reference/celery.messaging.html
+celery.worker.WorkController.safe_process_task method reference/celery.worker.html
+celery.result.TaskSetResult.taskset_id attribute reference/celery.result.html
+celery.supervisor.OFASupervisor.Process.join method reference/celery.supervisor.html
+celery.backends.amqp.Backend.get_traceback method reference/celery.backends.amqp.html
+celery.log.emergency_error function reference/celery.log.html
+celery.monitoring.Statistics.on_start method reference/celery.monitoring.html
+celery.supervisor.OFASupervisor.args attribute reference/celery.supervisor.html
+celery.task.base.Task.routing_key attribute reference/celery.task.base.html
+celery.task.base.PeriodicTask.run_every attribute reference/celery.task.base.html
+celery.managers.TaskManager.is_done method reference/celery.managers.html
+celery.task.base.Task.get_consumer method reference/celery.task.base.html
+celery.execute.ExecuteWrapper class reference/celery.execute.html
+celery.discovery.find_related_module function reference/celery.discovery.html
+celery.registry.TaskRegistry.filter_types method reference/celery.registry.html
+celery.worker.controllers.Mediator class reference/celery.worker.controllers.html
+celery.backends.tyrant.Backend class reference/celery.backends.tyrant.html
+celery.worker.WorkController.pool attribute reference/celery.worker.html
+celery.managers.TableLock class reference/celery.managers.html
+TaskMeta.task_id attribute reference/celery.models.html
+celery.task.base.TaskSet.task_name attribute reference/celery.task.base.html
+celery.supervisor.OFASupervisor.Process.ident attribute reference/celery.supervisor.html
+celery.datastructures.ExceptionInfo class reference/celery.datastructures.html
+celery.backends.amqp.Backend.get_result method reference/celery.backends.amqp.html
+celery.task.base.Task.ignore_result attribute reference/celery.task.base.html
+celery.managers.PeriodicTaskManager class reference/celery.managers.html
+TaskMeta class reference/celery.models.html
+celery.backends.base.BaseBackend.exception_to_python method reference/celery.backends.base.html
+celery.conf.LOG_FORMAT data reference/celery.conf.html
+celery.pool.DynamicPool class reference/celery.pool.html
+celery.backends.tyrant.Backend.close method reference/celery.backends.tyrant.html
+celery.backends.base.BaseBackend.wait_for method reference/celery.backends.base.html
+PeriodicTaskMeta.last_run_at attribute reference/celery.models.html
+celery.exceptions.NotRegistered exception reference/celery.exceptions.html
+celery.result.TaskSetResult.itersubtasks method reference/celery.result.html
+celery.bin.celeryd.acquire_pidlock function reference/celery.bin.celeryd.html
+celery.task.base.TaskSet.remote_execute classmethod reference/celery.task.base.html
+celery.backends.database.Backend.get_status method reference/celery.backends.database.html
+celery.pool.DynamicPool.add_worker method reference/celery.pool.html
+celery.worker.controllers.BackgroundThread.on_iteration method reference/celery.worker.controllers.html
+celery.pool.TaskPool.limit attribute reference/celery.pool.html
+celery.result.TaskSetResult.subtasks attribute reference/celery.result.html
+celery.task.base.TaskSet.run method reference/celery.task.base.html
+celery.worker.WorkController.stop method reference/celery.worker.html
+celery.result.AsyncResult.task_id attribute reference/celery.result.html
+celery.task.base.Task.disable_error_emails attribute reference/celery.task.base.html
+celery.managers.PeriodicTaskManager.is_time method reference/celery.managers.html
+celery.loaders.djangoapp.Loader.on_worker_init method reference/celery.loaders.djangoapp.html
+celery.backends.base.BaseBackend.mark_as_failure method reference/celery.backends.base.html
+celery.conf.AMQP_EXCHANGE data reference/celery.conf.html
+celery.loaders.djangoapp.Loader class reference/celery.loaders.djangoapp.html
+celery.worker.AMQPListener.stop method reference/celery.worker.html
+celery.worker.AMQPListener.logger attribute reference/celery.worker.html
+celery.worker.AMQPListener class reference/celery.worker.html
+celery.views.task_status function reference/celery.views.html
+celery.task.builtins.DeleteExpiredTaskMetaTask.run method reference/celery.task.builtins.html
+celery.task.base.Task.delay classmethod reference/celery.task.base.html
+celery.pool.TaskPool.apply_async method reference/celery.pool.html
+PeriodicTaskMeta.name attribute reference/celery.models.html
+celery.task.base.Task.on_retry method reference/celery.task.base.html
+celery.monitoring.Statistics.run method reference/celery.monitoring.html
+celery.task.base.Task.apply classmethod reference/celery.task.base.html
+celery.registry.TaskRegistry.get_task method reference/celery.registry.html
+celery.result.EagerResult.result attribute reference/celery.result.html
+celery.utils.retry_over_time function reference/celery.utils.html
+celery.managers.PeriodicTaskManager.init_entries method reference/celery.managers.html
+celery.worker.WorkController.loglevel attribute reference/celery.worker.html
+celery.registry.TaskRegistry.get_all_regular method reference/celery.registry.html
+celery.result.BaseAsyncResult.wait method reference/celery.result.html
+celery.result.TaskSetResult.join method reference/celery.result.html
+celery.task.builtins.DeleteExpiredTaskMetaTask class reference/celery.task.builtins.html
+celery.worker.job.TaskWrapper.task_name attribute reference/celery.worker.job.html
+celery.pool.process_is_dead function reference/celery.pool.html
+celery.backends.amqp.Backend.get_status method reference/celery.backends.amqp.html
+celery.worker.WorkController.amqp_listener attribute reference/celery.worker.html
+celery.backends.database.Backend.is_done method reference/celery.backends.database.html
+TASK_STATUSES_CHOICES data reference/celery.models.html
+celery.pool.reap_process function reference/celery.pool.html
+celery.task.base.Task.mandatory attribute reference/celery.task.base.html
+celery.views.is_task_done function reference/celery.views.html
+TASK_STATUS_FAILURE data reference/celery.models.html
+celery.task.base.Task.apply_async classmethod reference/celery.task.base.html
+celery.log.setup_logger function reference/celery.log.html
+celery.result.BaseAsyncResult class reference/celery.result.html
+celery.result.BaseAsyncResult.get method reference/celery.result.html
+celery.worker.AMQPListener.hold_queue attribute reference/celery.worker.html
+celery.conf.DAEMON_PID_FILE data reference/celery.conf.html
+celery.task.base.TaskSet.arguments attribute reference/celery.task.base.html
+celery.worker.controllers.PeriodicWorkController.on_start method reference/celery.worker.controllers.html
+celery.monitoring.Statistics class reference/celery.monitoring.html
+celery.registry.TaskRegistry.autodiscover method reference/celery.registry.html
+celery.worker.WorkController.mediator attribute reference/celery.worker.html
+celery.managers.TableLock.release method reference/celery.managers.html
+celery.datastructures.PositionQueue.UnfilledPosition class reference/celery.datastructures.html
+celery.managers.TaskManager.store_result method reference/celery.managers.html
+celery.monitoring.TimerStats class reference/celery.monitoring.html
+celery.backends.tyrant.Backend.open method reference/celery.backends.tyrant.html

+ 152 - 0
reference/celery.backends.amqp.html

@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Backend: AMQP - celery.backends.amqp &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Backend: Tokyo Tyrant - celery.backends.tyrant" href="celery.backends.tyrant.html" />
+    <link rel="prev" title="Backend: Cache - celery.backends.cache" href="celery.backends.cache.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.tyrant.html" title="Backend: Tokyo Tyrant - celery.backends.tyrant"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.cache.html" title="Backend: Cache - celery.backends.cache"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.backends.amqp">
+<h1>Backend: AMQP - celery.backends.amqp<a class="headerlink" href="#module-celery.backends.amqp" title="Permalink to this headline">¶</a></h1>
+<p>celery.backends.amqp</p>
+<dl class="class">
+<dt id="celery.backends.amqp.Backend">
+<em class="property">
+class </em><tt class="descclassname">celery.backends.amqp.</tt><tt class="descname">Backend</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.backends.amqp.Backend" title="Permalink to this definition">¶</a></dt>
+<dd><p>AMQP backend. Publish results by sending messages to the broker
+using the task id as routing key.</p>
+<p><strong>NOTE:</strong> Results published using this backend is read-once only.
+After the result has been read, the result is deleted. (however, it&#8217;s
+still cached locally by the backend instance).</p>
+<dl class="method">
+<dt id="celery.backends.amqp.Backend.get_result">
+<tt class="descname">get_result</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.amqp.Backend.get_result" title="Permalink to this definition">¶</a></dt>
+<dd>Get the result for a task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.amqp.Backend.get_status">
+<tt class="descname">get_status</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.amqp.Backend.get_status" title="Permalink to this definition">¶</a></dt>
+<dd>Get the status of a task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.amqp.Backend.get_traceback">
+<tt class="descname">get_traceback</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.amqp.Backend.get_traceback" title="Permalink to this definition">¶</a></dt>
+<dd>Get the traceback for a failed task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.amqp.Backend.is_done">
+<tt class="descname">is_done</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.amqp.Backend.is_done" title="Permalink to this definition">¶</a></dt>
+<dd>Returns <tt class="xref docutils literal"><span class="pre">True</span></tt> if task with <tt class="docutils literal"><span class="pre">task_id</span></tt> has been executed.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.amqp.Backend.store_result">
+<tt class="descname">store_result</tt><big>(</big><em>task_id</em>, <em>result</em>, <em>status</em>, <em>traceback=None</em><big>)</big><a class="headerlink" href="#celery.backends.amqp.Backend.store_result" title="Permalink to this definition">¶</a></dt>
+<dd>Send task return value and status.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.backends.cache.html"
+                                  title="previous chapter">Backend: Cache - celery.backends.cache</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.backends.tyrant.html"
+                                  title="next chapter">Backend: Tokyo Tyrant - celery.backends.tyrant</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.backends.amqp.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.tyrant.html" title="Backend: Tokyo Tyrant - celery.backends.tyrant"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.cache.html" title="Backend: Cache - celery.backends.cache"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 209 - 0
reference/celery.backends.base.html

@@ -0,0 +1,209 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Backend: Base - celery.backends.base &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Backend: Database - celery.backends.database" href="celery.backends.database.html" />
+    <link rel="prev" title="Backends - celery.backends" href="celery.backends.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.database.html" title="Backend: Database - celery.backends.database"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.html" title="Backends - celery.backends"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.backends.base">
+<h1>Backend: Base - celery.backends.base<a class="headerlink" href="#module-celery.backends.base" title="Permalink to this headline">¶</a></h1>
+<p>celery.backends.base</p>
+<dl class="class">
+<dt id="celery.backends.base.BaseBackend">
+<em class="property">
+class </em><tt class="descclassname">celery.backends.base.</tt><tt class="descname">BaseBackend</tt><a class="headerlink" href="#celery.backends.base.BaseBackend" title="Permalink to this definition">¶</a></dt>
+<dd><p>The base backend class. All backends should inherit from this.</p>
+<dl class="exception">
+<dt id="celery.backends.base.BaseBackend.TimeoutError">
+<em class="property">
+exception </em><tt class="descname">TimeoutError</tt><a class="headerlink" href="#celery.backends.base.BaseBackend.TimeoutError" title="Permalink to this definition">¶</a></dt>
+<dd>The operation timed out.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.cleanup">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">cleanup</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.cleanup" title="Permalink to this definition">¶</a></dt>
+<dd>Backend cleanup. Is run by
+<tt class="xref docutils literal"><span class="pre">celery.task.DeleteExpiredTaskMetaTask</span></tt>.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.exception_to_python">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">exception_to_python</tt><big>(</big><em>exc</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.exception_to_python" title="Permalink to this definition">¶</a></dt>
+<dd>Convert serialized exception to Python exception.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.get_result">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">get_result</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.get_result" title="Permalink to this definition">¶</a></dt>
+<dd>Get the result of a task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.get_status">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">get_status</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.get_status" title="Permalink to this definition">¶</a></dt>
+<dd>Get the status of a task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.get_traceback">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">get_traceback</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.get_traceback" title="Permalink to this definition">¶</a></dt>
+<dd>Get the traceback for a failed task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.is_done">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">is_done</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.is_done" title="Permalink to this definition">¶</a></dt>
+<dd>Returns <tt class="xref docutils literal"><span class="pre">True</span></tt> if the task was successfully executed.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.mark_as_done">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">mark_as_done</tt><big>(</big><em>task_id</em>, <em>result</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.mark_as_done" title="Permalink to this definition">¶</a></dt>
+<dd>Mark task as successfully executed.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.mark_as_failure">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">mark_as_failure</tt><big>(</big><em>task_id</em>, <em>exc</em>, <em>traceback=None</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.mark_as_failure" title="Permalink to this definition">¶</a></dt>
+<dd>Mark task as executed with failure. Stores the execption.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.mark_as_retry">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">mark_as_retry</tt><big>(</big><em>task_id</em>, <em>exc</em>, <em>traceback=None</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.mark_as_retry" title="Permalink to this definition">¶</a></dt>
+<dd>Mark task as being retries. Stores the current
+exception (if any).</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.prepare_exception">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">prepare_exception</tt><big>(</big><em>exc</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.prepare_exception" title="Permalink to this definition">¶</a></dt>
+<dd>Prepare exception for serialization.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.prepare_result">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">prepare_result</tt><big>(</big><em>result</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.prepare_result" title="Permalink to this definition">¶</a></dt>
+<dd>Prepare result for storage.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.process_cleanup">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">process_cleanup</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.process_cleanup" title="Permalink to this definition">¶</a></dt>
+<dd><p>Cleanup actions to do at the end of a task worker process.</p>
+<p>See <tt class="xref docutils literal"><span class="pre">celery.worker.jail()</span></tt>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.store_result">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">store_result</tt><big>(</big><em>task_id</em>, <em>result</em>, <em>status</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.store_result" title="Permalink to this definition">¶</a></dt>
+<dd>Store the result and status of a task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.base.BaseBackend.wait_for">
+<tt class="descclassname">BaseBackend.</tt><tt class="descname">wait_for</tt><big>(</big><em>task_id</em>, <em>timeout=None</em><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.wait_for" title="Permalink to this definition">¶</a></dt>
+<dd><p>Wait for task and return its result.</p>
+<p>If the task raises an exception, this exception
+will be re-raised by <a title="celery.backends.base.BaseBackend.wait_for" class="reference internal" href="#celery.backends.base.BaseBackend.wait_for"><tt class="xref docutils literal"><span class="pre">wait_for()</span></tt></a>.</p>
+<p>If <tt class="docutils literal"><span class="pre">timeout</span></tt> is not <tt class="xref docutils literal"><span class="pre">None</span></tt>, this raises the
+<a title="celery.exceptions.TimeoutError" class="reference external" href="celery.exceptions.html#celery.exceptions.TimeoutError"><tt class="xref docutils literal"><span class="pre">celery.exceptions.TimeoutError</span></tt></a> exception if the operation
+takes longer than <tt class="docutils literal"><span class="pre">timeout</span></tt> seconds.</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.backends.html"
+                                  title="previous chapter">Backends - celery.backends</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.backends.database.html"
+                                  title="next chapter">Backend: Database - celery.backends.database</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.backends.base.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.database.html" title="Backend: Database - celery.backends.database"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.html" title="Backends - celery.backends"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 122 - 0
reference/celery.backends.cache.html

@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Backend: Cache - celery.backends.cache &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Backend: AMQP - celery.backends.amqp" href="celery.backends.amqp.html" />
+    <link rel="prev" title="Backend: Database - celery.backends.database" href="celery.backends.database.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.amqp.html" title="Backend: AMQP - celery.backends.amqp"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.database.html" title="Backend: Database - celery.backends.database"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.backends.cache">
+<h1>Backend: Cache - celery.backends.cache<a class="headerlink" href="#module-celery.backends.cache" title="Permalink to this headline">¶</a></h1>
+<p>celery.backends.cache</p>
+<dl class="class">
+<dt id="celery.backends.cache.Backend">
+<em class="property">
+class </em><tt class="descclassname">celery.backends.cache.</tt><tt class="descname">Backend</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.backends.cache.Backend" title="Permalink to this definition">¶</a></dt>
+<dd>Backend using the Django cache framework to store task metadata.</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.backends.database.html"
+                                  title="previous chapter">Backend: Database - celery.backends.database</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.backends.amqp.html"
+                                  title="next chapter">Backend: AMQP - celery.backends.amqp</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.backends.cache.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.amqp.html" title="Backend: AMQP - celery.backends.amqp"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.database.html" title="Backend: Database - celery.backends.database"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 173 - 0
reference/celery.backends.database.html

@@ -0,0 +1,173 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Backend: Database - celery.backends.database &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Backend: Cache - celery.backends.cache" href="celery.backends.cache.html" />
+    <link rel="prev" title="Backend: Base - celery.backends.base" href="celery.backends.base.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.cache.html" title="Backend: Cache - celery.backends.cache"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.base.html" title="Backend: Base - celery.backends.base"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.backends.database">
+<h1>Backend: Database - celery.backends.database<a class="headerlink" href="#module-celery.backends.database" title="Permalink to this headline">¶</a></h1>
+<p>celery.backends.database</p>
+<dl class="class">
+<dt id="celery.backends.database.Backend">
+<em class="property">
+class </em><tt class="descclassname">celery.backends.database.</tt><tt class="descname">Backend</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.backends.database.Backend" title="Permalink to this definition">¶</a></dt>
+<dd><p>The database backends. Using Django models to store task metadata.</p>
+<dl class="method">
+<dt id="celery.backends.database.Backend.cleanup">
+<tt class="descname">cleanup</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.backends.database.Backend.cleanup" title="Permalink to this definition">¶</a></dt>
+<dd>Delete expired metadata.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.database.Backend.get_result">
+<tt class="descname">get_result</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.database.Backend.get_result" title="Permalink to this definition">¶</a></dt>
+<dd>Get the result for a task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.database.Backend.get_status">
+<tt class="descname">get_status</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.database.Backend.get_status" title="Permalink to this definition">¶</a></dt>
+<dd>Get the status of a task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.database.Backend.get_traceback">
+<tt class="descname">get_traceback</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.database.Backend.get_traceback" title="Permalink to this definition">¶</a></dt>
+<dd>Get the traceback of a failed task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.database.Backend.init_periodic_tasks">
+<tt class="descname">init_periodic_tasks</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.backends.database.Backend.init_periodic_tasks" title="Permalink to this definition">¶</a></dt>
+<dd>Create entries for all periodic tasks in the database.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.database.Backend.is_done">
+<tt class="descname">is_done</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.backends.database.Backend.is_done" title="Permalink to this definition">¶</a></dt>
+<dd>Returns <tt class="xref docutils literal"><span class="pre">True</span></tt> if task with <tt class="docutils literal"><span class="pre">task_id</span></tt> has been executed.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.database.Backend.run_periodic_tasks">
+<tt class="descname">run_periodic_tasks</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.backends.database.Backend.run_periodic_tasks" title="Permalink to this definition">¶</a></dt>
+<dd><p>Run all waiting periodic tasks.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a list of <tt class="docutils literal"><span class="pre">(task,</span> <span class="pre">task_id)</span></tt> tuples containing
+the task class and id for the resulting tasks applied.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.database.Backend.store_result">
+<tt class="descname">store_result</tt><big>(</big><em>task_id</em>, <em>result</em>, <em>status</em>, <em>traceback=None</em><big>)</big><a class="headerlink" href="#celery.backends.database.Backend.store_result" title="Permalink to this definition">¶</a></dt>
+<dd>Store return value and status of an executed task.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.backends.base.html"
+                                  title="previous chapter">Backend: Base - celery.backends.base</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.backends.cache.html"
+                                  title="next chapter">Backend: Cache - celery.backends.cache</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.backends.database.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.cache.html" title="Backend: Cache - celery.backends.cache"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.base.html" title="Backend: Base - celery.backends.base"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 148 - 0
reference/celery.backends.html

@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Backends - celery.backends &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Backend: Base - celery.backends.base" href="celery.backends.base.html" />
+    <link rel="prev" title="Process Supervisor - celery.supervisor" href="celery.supervisor.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.base.html" title="Backend: Base - celery.backends.base"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.supervisor.html" title="Process Supervisor - celery.supervisor"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.backends">
+<h1>Backends - celery.backends<a class="headerlink" href="#module-celery.backends" title="Permalink to this headline">¶</a></h1>
+<p>celery.backends</p>
+<dl class="function">
+<dt id="celery.backends.get_backend_cls">
+<tt class="descclassname">celery.backends.</tt><tt class="descname">get_backend_cls</tt><big>(</big><em>backend</em><big>)</big><a class="headerlink" href="#celery.backends.get_backend_cls" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get backend class by name.</p>
+<p>If the name does not include &#8220;<tt class="docutils literal"><span class="pre">.</span></tt>&#8221; (is not fully qualified),
+<tt class="docutils literal"><span class="pre">&quot;celery.backends.&quot;</span></tt> will be prepended to the name. e.g.
+<tt class="docutils literal"><span class="pre">&quot;database&quot;</span></tt> becomes <tt class="docutils literal"><span class="pre">&quot;celery.backends.database&quot;</span></tt>.</p>
+</dd></dl>
+
+<dl class="data">
+<dt id="celery.backends.get_default_backend_cls">
+<tt class="descclassname">celery.backends.</tt><tt class="descname">get_default_backend_cls</tt><a class="headerlink" href="#celery.backends.get_default_backend_cls" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="function">
+<dt id="celery.backends.get_default_periodicstatus_backend_cls">
+<tt class="descclassname">celery.backends.</tt><tt class="descname">get_default_periodicstatus_backend_cls</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.backends.get_default_periodicstatus_backend_cls" title="Permalink to this definition">¶</a></dt>
+<dd>Get the backend class specified in
+<tt class="xref docutils literal"><span class="pre">CELERY_PERIODIC_STATUS_BACKEND</span></tt>.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt>
+<tt class="descclassname">celery.backends.</tt><tt class="descname">get_default_periodicstatus_backend_cls</tt></dt>
+<dd><dl class="class">
+<dt id="celery.backends.DefaultBackend">
+<em class="property">
+class </em><tt class="descclassname">celery.backends.</tt><tt class="descname">DefaultBackend</tt><a class="headerlink" href="#celery.backends.DefaultBackend" title="Permalink to this definition">¶</a></dt>
+<dd>The default backend class used for storing task results and status,
+specified in <tt class="xref docutils literal"><span class="pre">CELERY_BACKEND</span></tt>.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.supervisor.html"
+                                  title="previous chapter">Process Supervisor - celery.supervisor</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.backends.base.html"
+                                  title="next chapter">Backend: Base - celery.backends.base</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.backends.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.base.html" title="Backend: Base - celery.backends.base"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.supervisor.html" title="Process Supervisor - celery.supervisor"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 147 - 0
reference/celery.backends.tyrant.html

@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Backend: Tokyo Tyrant - celery.backends.tyrant &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Configuration - celery.conf" href="celery.conf.html" />
+    <link rel="prev" title="Backend: AMQP - celery.backends.amqp" href="celery.backends.amqp.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.conf.html" title="Configuration - celery.conf"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.amqp.html" title="Backend: AMQP - celery.backends.amqp"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.backends.tyrant">
+<h1>Backend: Tokyo Tyrant - celery.backends.tyrant<a class="headerlink" href="#module-celery.backends.tyrant" title="Permalink to this headline">¶</a></h1>
+<p>celery.backends.tyrant</p>
+<dl class="class">
+<dt id="celery.backends.tyrant.Backend">
+<em class="property">
+class </em><tt class="descclassname">celery.backends.tyrant.</tt><tt class="descname">Backend</tt><big>(</big><em>tyrant_host=None</em>, <em>tyrant_port=None</em><big>)</big><a class="headerlink" href="#celery.backends.tyrant.Backend" title="Permalink to this definition">¶</a></dt>
+<dd><p>Tokyo Cabinet based task backend store.</p>
+<dl class="attribute">
+<dt id="celery.backends.tyrant.Backend.tyrant_host">
+<tt class="descname">tyrant_host</tt><a class="headerlink" href="#celery.backends.tyrant.Backend.tyrant_host" title="Permalink to this definition">¶</a></dt>
+<dd>The hostname to the Tokyo Tyrant server.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.backends.tyrant.Backend.tyrant_port">
+<tt class="descname">tyrant_port</tt><a class="headerlink" href="#celery.backends.tyrant.Backend.tyrant_port" title="Permalink to this definition">¶</a></dt>
+<dd>The port to the Tokyo Tyrant server.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.tyrant.Backend.close">
+<tt class="descname">close</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.backends.tyrant.Backend.close" title="Permalink to this definition">¶</a></dt>
+<dd>Close the tyrant connection and remove the cache.</dd></dl>
+
+<dl class="method">
+<dt id="celery.backends.tyrant.Backend.open">
+<tt class="descname">open</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.backends.tyrant.Backend.open" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get <tt class="xref docutils literal"><span class="pre">pytyrant.PyTyrant`</span></tt> instance with the current
+server configuration.</p>
+<p>The connection is then cached until you do an
+explicit <a title="celery.backends.tyrant.Backend.close" class="reference internal" href="#celery.backends.tyrant.Backend.close"><tt class="xref docutils literal"><span class="pre">close()</span></tt></a>.</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.backends.amqp.html"
+                                  title="previous chapter">Backend: AMQP - celery.backends.amqp</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.conf.html"
+                                  title="next chapter">Configuration - celery.conf</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.backends.tyrant.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.conf.html" title="Configuration - celery.conf"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.amqp.html" title="Backend: AMQP - celery.backends.amqp"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 214 - 0
reference/celery.bin.celeryd.html

@@ -0,0 +1,214 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Celery Worker Daemon - celery.bin.celeryd &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Celery Initialize - celery.bin.celeryinit" href="celery.bin.celeryinit.html" />
+    <link rel="prev" title="Django Fields - celery.fields" href="celery.fields.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.bin.celeryinit.html" title="Celery Initialize - celery.bin.celeryinit"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.fields.html" title="Django Fields - celery.fields"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.bin.celeryd">
+<h1>Celery Worker Daemon - celery.bin.celeryd<a class="headerlink" href="#module-celery.bin.celeryd" title="Permalink to this headline">¶</a></h1>
+<p>celeryd</p>
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd-c">
+<tt class="descname">-c</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--concurrency</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd-c" title="Permalink to this definition">¶</a></dt>
+<dd>Number of child processes processing the queue. The default
+is the number of CPUs available on your system.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd-f">
+<tt class="descname">-f</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--logfile</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd-f" title="Permalink to this definition">¶</a></dt>
+<dd>Path to log file. If no logfile is specified, <tt class="docutils literal"><span class="pre">stderr</span></tt> is used.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd-l">
+<tt class="descname">-l</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--loglevel</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd-l" title="Permalink to this definition">¶</a></dt>
+<dd>Logging level, choose between <tt class="docutils literal"><span class="pre">DEBUG</span></tt>, <tt class="docutils literal"><span class="pre">INFO</span></tt>, <tt class="docutils literal"><span class="pre">WARNING</span></tt>,
+<tt class="docutils literal"><span class="pre">ERROR</span></tt>, <tt class="docutils literal"><span class="pre">CRITICAL</span></tt>, or <tt class="docutils literal"><span class="pre">FATAL</span></tt>.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd-p">
+<tt class="descname">-p</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--pidfile</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd-p" title="Permalink to this definition">¶</a></dt>
+<dd>Path to pidfile.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd-s">
+<tt class="descname">-s</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--statistics</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd-s" title="Permalink to this definition">¶</a></dt>
+<dd>Turn on reporting of statistics (remember to flush the statistics message
+queue from time to time).</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd-d">
+<tt class="descname">-d</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--detach</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--daemon</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd-d" title="Permalink to this definition">¶</a></dt>
+<dd>Run in the background as a daemon.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd-S">
+<tt class="descname">-S</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--supervised</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd-S" title="Permalink to this definition">¶</a></dt>
+<dd>Restart the worker server if it dies.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd--discard">
+<tt class="descname">--discard</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd--discard" title="Permalink to this definition">¶</a></dt>
+<dd>Discard all waiting tasks before the daemon is started.
+<strong>WARNING</strong>: This is unrecoverable, and the tasks will be
+deleted from the messaging server.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd-u">
+<tt class="descname">-u</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--uid</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd-u" title="Permalink to this definition">¶</a></dt>
+<dd>User-id to run <tt class="docutils literal"><span class="pre">celeryd</span></tt> as when in daemon mode.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd-g">
+<tt class="descname">-g</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--gid</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd-g" title="Permalink to this definition">¶</a></dt>
+<dd>Group-id to run <tt class="docutils literal"><span class="pre">celeryd</span></tt> as when in daemon mode.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd--umask">
+<tt class="descname">--umask</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd--umask" title="Permalink to this definition">¶</a></dt>
+<dd>umask of the process when in daemon mode.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd--workdir">
+<tt class="descname">--workdir</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd--workdir" title="Permalink to this definition">¶</a></dt>
+<dd>Directory to change to when in daemon mode.</dd></dl>
+
+<dl class="cmdoption">
+<dt id="cmdoption-celeryd--chroot">
+<tt class="descname">--chroot</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-celeryd--chroot" title="Permalink to this definition">¶</a></dt>
+<dd>Change root directory to this path when in daemon mode.</dd></dl>
+
+<dl class="function">
+<dt id="celery.bin.celeryd.acquire_pidlock">
+<tt class="descclassname">celery.bin.celeryd.</tt><tt class="descname">acquire_pidlock</tt><big>(</big><em>pidfile</em><big>)</big><a class="headerlink" href="#celery.bin.celeryd.acquire_pidlock" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get the <tt class="xref docutils literal"><span class="pre">daemon.pidlockfile.PIDLockFile</span></tt> handler for
+<tt class="docutils literal"><span class="pre">pidfile</span></tt>.</p>
+<p>If the <tt class="docutils literal"><span class="pre">pidfile</span></tt> already exists, but the process is not running the
+<tt class="docutils literal"><span class="pre">pidfile</span></tt> will be removed, a <tt class="docutils literal"><span class="pre">&quot;stale</span> <span class="pre">pidfile&quot;</span></tt> message is emitted
+and execution continues as normally. However, if the process is still
+running the program will exit complaning that the program is already
+running in the background somewhere.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.bin.celeryd.install_restart_signal_handler">
+<tt class="descclassname">celery.bin.celeryd.</tt><tt class="descname">install_restart_signal_handler</tt><big>(</big><em>worker</em><big>)</big><a class="headerlink" href="#celery.bin.celeryd.install_restart_signal_handler" title="Permalink to this definition">¶</a></dt>
+<dd>Installs a signal handler that restarts the current program
+when it receives the <tt class="docutils literal"><span class="pre">SIGHUP</span></tt> signal.</dd></dl>
+
+<dl class="function">
+<dt id="celery.bin.celeryd.parse_options">
+<tt class="descclassname">celery.bin.celeryd.</tt><tt class="descname">parse_options</tt><big>(</big><em>arguments</em><big>)</big><a class="headerlink" href="#celery.bin.celeryd.parse_options" title="Permalink to this definition">¶</a></dt>
+<dd>Parse the available options to <tt class="docutils literal"><span class="pre">celeryd</span></tt>.</dd></dl>
+
+<dl class="function">
+<dt id="celery.bin.celeryd.run_worker">
+<tt class="descclassname">celery.bin.celeryd.</tt><tt class="descname">run_worker</tt><big>(</big><em>concurrency=16</em>, <em>detach=False</em>, <em>loglevel=20</em>, <em>logfile='celeryd.log'</em>, <em>discard=False</em>, <em>pidfile='celeryd.pid'</em>, <em>umask=0</em>, <em>uid=None</em>, <em>gid=None</em>, <em>supervised=False</em>, <em>working_directory=None</em>, <em>chroot=None</em>, <em>statistics=None</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.bin.celeryd.run_worker" title="Permalink to this definition">¶</a></dt>
+<dd>Starts the celery worker server.</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.fields.html"
+                                  title="previous chapter">Django Fields - celery.fields</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.bin.celeryinit.html"
+                                  title="next chapter">Celery Initialize - celery.bin.celeryinit</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.bin.celeryd.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.bin.celeryinit.html" title="Celery Initialize - celery.bin.celeryinit"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.fields.html" title="Django Fields - celery.fields"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 115 - 0
reference/celery.bin.celeryinit.html

@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Celery Initialize - celery.bin.celeryinit &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Change history" href="../changelog.html" />
+    <link rel="prev" title="Celery Worker Daemon - celery.bin.celeryd" href="celery.bin.celeryd.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="../changelog.html" title="Change history"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.bin.celeryd.html" title="Celery Worker Daemon - celery.bin.celeryd"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.bin.celeryinit">
+<h1>Celery Initialize - celery.bin.celeryinit<a class="headerlink" href="#module-celery.bin.celeryinit" title="Permalink to this headline">¶</a></h1>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.bin.celeryd.html"
+                                  title="previous chapter">Celery Worker Daemon - celery.bin.celeryd</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="../changelog.html"
+                                  title="next chapter">Change history</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.bin.celeryinit.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="../changelog.html" title="Change history"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.bin.celeryd.html" title="Celery Worker Daemon - celery.bin.celeryd"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 308 - 0
reference/celery.conf.html

@@ -0,0 +1,308 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Configuration - celery.conf &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Datastructures - celery.datastructures" href="celery.datastructures.html" />
+    <link rel="prev" title="Backend: Tokyo Tyrant - celery.backends.tyrant" href="celery.backends.tyrant.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.datastructures.html" title="Datastructures - celery.datastructures"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.tyrant.html" title="Backend: Tokyo Tyrant - celery.backends.tyrant"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.conf">
+<h1>Configuration - celery.conf<a class="headerlink" href="#module-celery.conf" title="Permalink to this headline">¶</a></h1>
+<p>celery.conf</p>
+<dl class="data">
+<dt id="celery.conf.ALWAYS_EAGER">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">ALWAYS_EAGER</tt><a class="headerlink" href="#celery.conf.ALWAYS_EAGER" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="data">
+<dt id="celery.conf.AMQP_CONNECTION_RETRY">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_CONNECTION_RETRY</tt><a class="headerlink" href="#celery.conf.AMQP_CONNECTION_RETRY" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="data">
+<dt id="celery.conf.AMQP_CONNECTION_MAX_RETRIES">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_CONNECTION_MAX_RETRIES</tt><a class="headerlink" href="#celery.conf.AMQP_CONNECTION_MAX_RETRIES" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<p>Maximum number of retries before we give up re-establishing a connection
+to the AMQP broker.</p>
+<p>If this is set to <tt class="docutils literal"><span class="pre">0</span></tt> or <tt class="xref docutils literal"><span class="pre">None</span></tt>, we will retry forever.</p>
+<p>Default is <tt class="docutils literal"><span class="pre">100</span></tt> retries.</p>
+</dd></dl>
+
+<dl class="data">
+<dt id="celery.conf.AMQP_CONNECTION_TIMEOUT">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_CONNECTION_TIMEOUT</tt><a class="headerlink" href="#celery.conf.AMQP_CONNECTION_TIMEOUT" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="data">
+<dt id="celery.conf.SEND_CELERY_TASK_ERROR_EMAILS">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">SEND_CELERY_TASK_ERROR_EMAILS</tt><a class="headerlink" href="#celery.conf.SEND_CELERY_TASK_ERROR_EMAILS" title="Permalink to this definition">¶</a></dt>
+<dd>If set to <tt class="xref docutils literal"><span class="pre">True</span></tt>, errors in tasks will be sent to admins by e-mail.
+If unset, it will send the e-mails if <tt class="docutils literal"><span class="pre">settings.DEBUG</span></tt> is False.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt id="celery.conf.AMQP_CONSUMER_QUEUE">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_CONSUMER_QUEUE</tt><a class="headerlink" href="#celery.conf.AMQP_CONSUMER_QUEUE" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="data">
+<dt id="celery.conf.AMQP_CONSUMER_QUEUES">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_CONSUMER_QUEUES</tt><a class="headerlink" href="#celery.conf.AMQP_CONSUMER_QUEUES" title="Permalink to this definition">¶</a></dt>
+<dd>Dictionary defining multiple AMQP queues.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_CONSUMER_QUEUES</tt></dt>
+<dd><dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_CONNECTION_TIMEOUT</tt></dt>
+<dd>The timeout in seconds before we give up establishing a connection
+to the AMQP server.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt id="celery.conf.AMQP_CONSUMER_ROUTING_KEY">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_CONSUMER_ROUTING_KEY</tt><a class="headerlink" href="#celery.conf.AMQP_CONSUMER_ROUTING_KEY" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_CONSUMER_QUEUE</tt></dt>
+<dd>The name of the AMQP queue.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt id="celery.conf.AMQP_EXCHANGE">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_EXCHANGE</tt><a class="headerlink" href="#celery.conf.AMQP_EXCHANGE" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="data">
+<dt id="celery.conf.AMQP_EXCHANGE_TYPE">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_EXCHANGE_TYPE</tt><a class="headerlink" href="#celery.conf.AMQP_EXCHANGE_TYPE" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<p>The type of exchange. If the exchange type is <tt class="docutils literal"><span class="pre">direct</span></tt>, all messages
+receives all tasks. However, if the exchange type is <tt class="docutils literal"><span class="pre">topic</span></tt>, you can
+route e.g. some tasks to one server, and others to the rest.
+See <a class="reference external" href="http://bit.ly/wpamqpexchanges">Exchange types and the effect of bindings</a>.</p>
+</dd></dl>
+
+<dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_EXCHANGE_TYPE</tt></dt>
+<dd><dl class="data">
+<dt id="celery.conf.AMQP_PUBLISHER_ROUTING_KEY">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_PUBLISHER_ROUTING_KEY</tt><a class="headerlink" href="#celery.conf.AMQP_PUBLISHER_ROUTING_KEY" title="Permalink to this definition">¶</a></dt>
+<dd>The default AMQP routing key used when publishing tasks.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_PUBLISHER_ROUTING_KEY</tt></dt>
+<dd><dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_CONSUMER_ROUTING_KEY</tt></dt>
+<dd>The AMQP routing key used when consuming tasks.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt id="celery.conf.DAEMON_CONCURRENCY">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">DAEMON_CONCURRENCY</tt><a class="headerlink" href="#celery.conf.DAEMON_CONCURRENCY" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">AMQP_EXCHANGE</tt></dt>
+<dd>Name of the AMQP exchange.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt id="celery.conf.DAEMON_LOG_FILE">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">DAEMON_LOG_FILE</tt><a class="headerlink" href="#celery.conf.DAEMON_LOG_FILE" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="data">
+<dt id="celery.conf.DAEMON_LOG_LEVEL">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">DAEMON_LOG_LEVEL</tt><a class="headerlink" href="#celery.conf.DAEMON_LOG_LEVEL" title="Permalink to this definition">¶</a></dt>
+<dd>Celery daemon log level, can be any of <tt class="docutils literal"><span class="pre">DEBUG</span></tt>, <tt class="docutils literal"><span class="pre">INFO</span></tt>, <tt class="docutils literal"><span class="pre">WARNING</span></tt>,
+<tt class="docutils literal"><span class="pre">ERROR</span></tt>, <tt class="docutils literal"><span class="pre">CRITICAL</span></tt>, or <tt class="docutils literal"><span class="pre">FATAL</span></tt>. See the <tt class="xref docutils literal"><span class="pre">logging</span></tt> module
+for more information.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">DAEMON_LOG_LEVEL</tt></dt>
+<dd><dl class="data">
+<dt id="celery.conf.DAEMON_PID_FILE">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">DAEMON_PID_FILE</tt><a class="headerlink" href="#celery.conf.DAEMON_PID_FILE" title="Permalink to this definition">¶</a></dt>
+<dd>Full path to the daemon pidfile.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">DAEMON_PID_FILE</tt></dt>
+<dd><dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">DAEMON_CONCURRENCY</tt></dt>
+<dd>The number of concurrent worker processes, executing tasks simultaneously.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt id="celery.conf.DEFAULT_AMQP_CONNECTION_MAX_RETRIES">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">DEFAULT_AMQP_CONNECTION_MAX_RETRIES</tt><a class="headerlink" href="#celery.conf.DEFAULT_AMQP_CONNECTION_MAX_RETRIES" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="data">
+<dt id="celery.conf.LOG_LEVELS">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">LOG_LEVELS</tt><a class="headerlink" href="#celery.conf.LOG_LEVELS" title="Permalink to this definition">¶</a></dt>
+<dd>Mapping of log level names to <tt class="xref docutils literal"><span class="pre">logging</span></tt> module constants.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt id="celery.conf.LOG_FORMAT">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">LOG_FORMAT</tt><a class="headerlink" href="#celery.conf.LOG_FORMAT" title="Permalink to this definition">¶</a></dt>
+<dd><dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">DAEMON_LOG_FILE</tt></dt>
+<dd>The path to the deamon log file (if not set, <tt class="docutils literal"><span class="pre">stderr</span></tt> is used).</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">LOG_LEVELS</tt></dt>
+<dd><dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">LOG_FORMAT</tt></dt>
+<dd>The format to use for log messages.
+Default is <tt class="docutils literal"><span class="pre">[%(asctime)s:</span> <span class="pre">%(levelname)s/%(processName)s]</span> <span class="pre">%(message)s</span></tt></dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">SEND_CELERY_TASK_ERROR_EMAILS</tt></dt>
+<dd><dl class="data">
+<dt id="celery.conf.STATISTICS_COLLECT_INTERVAL">
+<tt class="descclassname">celery.conf.</tt><tt class="descname">STATISTICS_COLLECT_INTERVAL</tt><a class="headerlink" href="#celery.conf.STATISTICS_COLLECT_INTERVAL" title="Permalink to this definition">¶</a></dt>
+<dd>The interval in seconds of which the
+<tt class="xref docutils literal"><span class="pre">celery.task.CollectStatisticsTask`</span></tt> is run.</dd></dl>
+
+</dd></dl>
+
+<dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">STATISTICS_COLLECT_INTERVAL</tt></dt>
+<dd><dl class="data">
+<dt>
+<tt class="descclassname">celery.conf.</tt><tt class="descname">ALWAYS_EAGER</tt></dt>
+<dd>If this is <tt class="xref docutils literal"><span class="pre">True</span></tt>, all tasks will be executed locally by blocking
+until it is finished. <tt class="docutils literal"><span class="pre">apply_async</span></tt> and <tt class="docutils literal"><span class="pre">delay_task</span></tt> will return
+a <a title="celery.result.EagerResult" class="reference external" href="celery.result.html#celery.result.EagerResult"><tt class="xref docutils literal"><span class="pre">celery.result.EagerResult</span></tt></a> which emulates the behaviour of
+an <a title="celery.result.AsyncResult" class="reference external" href="celery.result.html#celery.result.AsyncResult"><tt class="xref docutils literal"><span class="pre">celery.result.AsyncResult</span></tt></a>.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.backends.tyrant.html"
+                                  title="previous chapter">Backend: Tokyo Tyrant - celery.backends.tyrant</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.datastructures.html"
+                                  title="next chapter">Datastructures - celery.datastructures</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.conf.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.datastructures.html" title="Datastructures - celery.datastructures"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.tyrant.html" title="Backend: Tokyo Tyrant - celery.backends.tyrant"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 216 - 0
reference/celery.datastructures.html

@@ -0,0 +1,216 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Datastructures - celery.datastructures &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Logging - celery.log" href="celery.log.html" />
+    <link rel="prev" title="Configuration - celery.conf" href="celery.conf.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.log.html" title="Logging - celery.log"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.conf.html" title="Configuration - celery.conf"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.datastructures">
+<h1>Datastructures - celery.datastructures<a class="headerlink" href="#module-celery.datastructures" title="Permalink to this headline">¶</a></h1>
+<p>Custom Datastructures</p>
+<dl class="class">
+<dt id="celery.datastructures.ExceptionInfo">
+<em class="property">
+class </em><tt class="descclassname">celery.datastructures.</tt><tt class="descname">ExceptionInfo</tt><big>(</big><em>exc_info</em><big>)</big><a class="headerlink" href="#celery.datastructures.ExceptionInfo" title="Permalink to this definition">¶</a></dt>
+<dd><p>Exception wrapping an exception and its traceback.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>exc_info</em> &#8211; The exception tuple info as returned by
+<tt class="xref docutils literal"><span class="pre">traceback.format_exception()</span></tt>.</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.datastructures.ExceptionInfo.exception">
+<tt class="descname">exception</tt><a class="headerlink" href="#celery.datastructures.ExceptionInfo.exception" title="Permalink to this definition">¶</a></dt>
+<dd>The original exception.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.datastructures.ExceptionInfo.traceback">
+<tt class="descname">traceback</tt><a class="headerlink" href="#celery.datastructures.ExceptionInfo.traceback" title="Permalink to this definition">¶</a></dt>
+<dd>A traceback from the point when <a title="celery.datastructures.ExceptionInfo.exception" class="reference internal" href="#celery.datastructures.ExceptionInfo.exception"><tt class="xref docutils literal"><span class="pre">exception</span></tt></a> was raised.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.datastructures.PositionQueue">
+<em class="property">
+class </em><tt class="descclassname">celery.datastructures.</tt><tt class="descname">PositionQueue</tt><big>(</big><em>length</em><big>)</big><a class="headerlink" href="#celery.datastructures.PositionQueue" title="Permalink to this definition">¶</a></dt>
+<dd><p>A positional queue of a specific length, with slots that are either
+filled or unfilled. When all of the positions are filled, the queue
+is considered <a title="celery.datastructures.PositionQueue.full" class="reference internal" href="#celery.datastructures.PositionQueue.full"><tt class="xref docutils literal"><span class="pre">full()</span></tt></a>.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>length</em> &#8211; see <a title="celery.datastructures.PositionQueue.length" class="reference internal" href="#celery.datastructures.PositionQueue.length"><tt class="xref docutils literal"><span class="pre">length</span></tt></a>.</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.datastructures.PositionQueue.length">
+<tt class="descname">length</tt><a class="headerlink" href="#celery.datastructures.PositionQueue.length" title="Permalink to this definition">¶</a></dt>
+<dd>The number of items required for the queue to be considered full.</dd></dl>
+
+<dl class="class">
+<dt id="celery.datastructures.PositionQueue.UnfilledPosition">
+<em class="property">
+class </em><tt class="descname">UnfilledPosition</tt><big>(</big><em>position</em><big>)</big><a class="headerlink" href="#celery.datastructures.PositionQueue.UnfilledPosition" title="Permalink to this definition">¶</a></dt>
+<dd>Describes an unfilled slot.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.datastructures.PositionQueue.filled">
+<tt class="descclassname">PositionQueue.</tt><tt class="descname">filled</tt><a class="headerlink" href="#celery.datastructures.PositionQueue.filled" title="Permalink to this definition">¶</a></dt>
+<dd>Returns the filled slots as a list.</dd></dl>
+
+<dl class="method">
+<dt id="celery.datastructures.PositionQueue.full">
+<tt class="descclassname">PositionQueue.</tt><tt class="descname">full</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.datastructures.PositionQueue.full" title="Permalink to this definition">¶</a></dt>
+<dd>Returns <tt class="xref docutils literal"><span class="pre">True</span></tt> if all of the slots has been filled.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.datastructures.SharedCounter">
+<em class="property">
+class </em><tt class="descclassname">celery.datastructures.</tt><tt class="descname">SharedCounter</tt><big>(</big><em>initial_value</em><big>)</big><a class="headerlink" href="#celery.datastructures.SharedCounter" title="Permalink to this definition">¶</a></dt>
+<dd><p>An integer that can be updated by several threads at once.</p>
+<p>Please note that the final value is not synchronized, this means
+that you should not update the value by using a previous value, the only
+reliable operations are increment and decrement.</p>
+<p>Example</p>
+<blockquote>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">max_clients</span> <span class="o">=</span> <span class="n">SharedCounter</span><span class="p">(</span><span class="n">initial_value</span><span class="o">=</span><span class="mf">10</span><span class="p">)</span>
+</pre></div>
+</div>
+<p># Thread one
+&gt;&gt;&gt; max_clients += 1 # OK (safe)</p>
+<p># Thread two
+&gt;&gt;&gt; max_clients -= 3 # OK (safe)</p>
+<p># Main thread
+&gt;&gt;&gt; if client &gt;= int(max_clients): # Max clients now at 8
+...    wait()</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">max_client</span> <span class="o">=</span> <span class="n">max_clients</span> <span class="o">+</span> <span class="mf">10</span> <span class="c"># NOT OK (unsafe)</span>
+</pre></div>
+</div>
+</blockquote>
+<dl class="method">
+<dt id="celery.datastructures.SharedCounter.decrement">
+<tt class="descname">decrement</tt><big>(</big><em>n=1</em><big>)</big><a class="headerlink" href="#celery.datastructures.SharedCounter.decrement" title="Permalink to this definition">¶</a></dt>
+<dd>Decrement value.</dd></dl>
+
+<dl class="method">
+<dt id="celery.datastructures.SharedCounter.increment">
+<tt class="descname">increment</tt><big>(</big><em>n=1</em><big>)</big><a class="headerlink" href="#celery.datastructures.SharedCounter.increment" title="Permalink to this definition">¶</a></dt>
+<dd>Increment value.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.conf.html"
+                                  title="previous chapter">Configuration - celery.conf</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.log.html"
+                                  title="next chapter">Logging - celery.log</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.datastructures.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.log.html" title="Logging - celery.log"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.conf.html" title="Configuration - celery.conf"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 127 - 0
reference/celery.discovery.html

@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Task Discovery - celery.discovery &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Statistics and Monitoring - celery.monitoring" href="celery.monitoring.html" />
+    <link rel="prev" title="Django Loader - celery.loaders.djangoapp" href="celery.loaders.djangoapp.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.monitoring.html" title="Statistics and Monitoring - celery.monitoring"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.djangoapp.html" title="Django Loader - celery.loaders.djangoapp"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.discovery">
+<h1>Task Discovery - celery.discovery<a class="headerlink" href="#module-celery.discovery" title="Permalink to this headline">¶</a></h1>
+<p>celery.discovery</p>
+<dl class="function">
+<dt id="celery.discovery.autodiscover">
+<tt class="descclassname">celery.discovery.</tt><tt class="descname">autodiscover</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.discovery.autodiscover" title="Permalink to this definition">¶</a></dt>
+<dd>Include tasks for all applications in <tt class="xref docutils literal"><span class="pre">INSTALLED_APPS</span></tt>.</dd></dl>
+
+<dl class="function">
+<dt id="celery.discovery.find_related_module">
+<tt class="descclassname">celery.discovery.</tt><tt class="descname">find_related_module</tt><big>(</big><em>app</em>, <em>related_name</em><big>)</big><a class="headerlink" href="#celery.discovery.find_related_module" title="Permalink to this definition">¶</a></dt>
+<dd>Given an application name and a module name, tries to find that
+module in the application, and running handler&#8217; if it finds it.</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.loaders.djangoapp.html"
+                                  title="previous chapter">Django Loader - celery.loaders.djangoapp</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.monitoring.html"
+                                  title="next chapter">Statistics and Monitoring - celery.monitoring</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.discovery.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.monitoring.html" title="Statistics and Monitoring - celery.monitoring"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.djangoapp.html" title="Django Loader - celery.loaders.djangoapp"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 146 - 0
reference/celery.exceptions.html

@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Exceptions - celery.exceptions &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Built-in Task Classes - celery.task.builtins" href="celery.task.builtins.html" />
+    <link rel="prev" title="Signals - celery.signals" href="celery.signals.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.task.builtins.html" title="Built-in Task Classes - celery.task.builtins"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.signals.html" title="Signals - celery.signals"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.exceptions">
+<h1>Exceptions - celery.exceptions<a class="headerlink" href="#module-celery.exceptions" title="Permalink to this headline">¶</a></h1>
+<p>celery.exceptions</p>
+<dl class="exception">
+<dt id="celery.exceptions.AlreadyRegistered">
+<em class="property">
+exception </em><tt class="descclassname">celery.exceptions.</tt><tt class="descname">AlreadyRegistered</tt><a class="headerlink" href="#celery.exceptions.AlreadyRegistered" title="Permalink to this definition">¶</a></dt>
+<dd>The task is already registered.</dd></dl>
+
+<dl class="exception">
+<dt id="celery.exceptions.MaxRetriesExceededError">
+<em class="property">
+exception </em><tt class="descclassname">celery.exceptions.</tt><tt class="descname">MaxRetriesExceededError</tt><a class="headerlink" href="#celery.exceptions.MaxRetriesExceededError" title="Permalink to this definition">¶</a></dt>
+<dd>The tasks max restart limit has been exceeded.</dd></dl>
+
+<dl class="exception">
+<dt id="celery.exceptions.NotRegistered">
+<em class="property">
+exception </em><tt class="descclassname">celery.exceptions.</tt><tt class="descname">NotRegistered</tt><a class="headerlink" href="#celery.exceptions.NotRegistered" title="Permalink to this definition">¶</a></dt>
+<dd>The task is not registered.</dd></dl>
+
+<dl class="exception">
+<dt id="celery.exceptions.RetryTaskError">
+<em class="property">
+exception </em><tt class="descclassname">celery.exceptions.</tt><tt class="descname">RetryTaskError</tt><big>(</big><em>message</em>, <em>exc</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.exceptions.RetryTaskError" title="Permalink to this definition">¶</a></dt>
+<dd>The task is to be retried later.</dd></dl>
+
+<dl class="exception">
+<dt id="celery.exceptions.TimeoutError">
+<em class="property">
+exception </em><tt class="descclassname">celery.exceptions.</tt><tt class="descname">TimeoutError</tt><a class="headerlink" href="#celery.exceptions.TimeoutError" title="Permalink to this definition">¶</a></dt>
+<dd>The operation timed out.</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.signals.html"
+                                  title="previous chapter">Signals - celery.signals</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.task.builtins.html"
+                                  title="next chapter">Built-in Task Classes - celery.task.builtins</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.exceptions.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.task.builtins.html" title="Built-in Task Classes - celery.task.builtins"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.signals.html" title="Signals - celery.signals"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 265 - 0
reference/celery.execute.html

@@ -0,0 +1,265 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Executing Tasks - celery.execute &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Task Result - celery.result" href="celery.result.html" />
+    <link rel="prev" title="Defining Tasks - celery.task.base" href="celery.task.base.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.result.html" title="Task Result - celery.result"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.task.base.html" title="Defining Tasks - celery.task.base"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.execute">
+<h1>Executing Tasks - celery.execute<a class="headerlink" href="#module-celery.execute" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="celery.execute.ExecuteWrapper">
+<em class="property">
+class </em><tt class="descclassname">celery.execute.</tt><tt class="descname">ExecuteWrapper</tt><big>(</big><em>fun</em>, <em>task_id</em>, <em>task_name</em>, <em>args=None</em>, <em>kwargs=None</em><big>)</big><a class="headerlink" href="#celery.execute.ExecuteWrapper" title="Permalink to this definition">¶</a></dt>
+<dd><p>Wraps the task in a jail, which catches all exceptions, and
+saves the status and result of the task execution to the task
+meta backend.</p>
+<p>If the call was successful, it saves the result to the task result
+backend, and sets the task status to <tt class="docutils literal"><span class="pre">&quot;DONE&quot;</span></tt>.</p>
+<p>If the call raises <a title="celery.exceptions.RetryTaskError" class="reference external" href="celery.exceptions.html#celery.exceptions.RetryTaskError"><tt class="xref docutils literal"><span class="pre">celery.exceptions.RetryTaskError</span></tt></a>, it extracts
+the original exception, uses that as the result and sets the task status
+to <tt class="docutils literal"><span class="pre">&quot;RETRY&quot;</span></tt>.</p>
+<p>If the call results in an exception, it saves the exception as the task
+result, and sets the task status to <tt class="docutils literal"><span class="pre">&quot;FAILURE&quot;</span></tt>.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><em>fun</em> &#8211; Callable object to execute.</li>
+<li><em>task_id</em> &#8211; The unique id of the task.</li>
+<li><em>task_name</em> &#8211; Name of the task.</li>
+<li><em>args</em> &#8211; List of positional args to pass on to the function.</li>
+<li><em>kwargs</em> &#8211; Keyword arguments mapping to pass on to the function.</li>
+</ul>
+</td>
+</tr>
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">the function return value on success, or
+the exception instance on failure.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<dl class="method">
+<dt id="celery.execute.ExecuteWrapper.handle_failure">
+<tt class="descname">handle_failure</tt><big>(</big><em>exc</em>, <em>exc_info</em><big>)</big><a class="headerlink" href="#celery.execute.ExecuteWrapper.handle_failure" title="Permalink to this definition">¶</a></dt>
+<dd>Handle exception.</dd></dl>
+
+<dl class="method">
+<dt id="celery.execute.ExecuteWrapper.handle_retry">
+<tt class="descname">handle_retry</tt><big>(</big><em>exc</em>, <em>exc_info</em><big>)</big><a class="headerlink" href="#celery.execute.ExecuteWrapper.handle_retry" title="Permalink to this definition">¶</a></dt>
+<dd>Handle retry exception.</dd></dl>
+
+<dl class="method">
+<dt id="celery.execute.ExecuteWrapper.handle_success">
+<tt class="descname">handle_success</tt><big>(</big><em>retval</em><big>)</big><a class="headerlink" href="#celery.execute.ExecuteWrapper.handle_success" title="Permalink to this definition">¶</a></dt>
+<dd><p>Handle successful execution.</p>
+<dl class="docutils">
+<dt>Saves the result to the current result store (skipped if the callable</dt>
+<dd>has a <tt class="docutils literal"><span class="pre">ignore_result</span></tt> attribute set to <tt class="xref docutils literal"><span class="pre">True</span></tt>).</dd>
+</dl>
+<p>If the callable has a <tt class="docutils literal"><span class="pre">on_success</span></tt> function, it as called with
+<tt class="docutils literal"><span class="pre">retval</span></tt> as argument.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>retval</em> &#8211; The return value.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.execute.apply">
+<tt class="descclassname">celery.execute.</tt><tt class="descname">apply</tt><big>(</big><em>task</em>, <em>args</em>, <em>kwargs</em>, <em>**options</em><big>)</big><a class="headerlink" href="#celery.execute.apply" title="Permalink to this definition">¶</a></dt>
+<dd><p>Apply the task locally.</p>
+<p>This will block until the task completes, and returns a
+<a title="celery.result.EagerResult" class="reference external" href="celery.result.html#celery.result.EagerResult"><tt class="xref docutils literal"><span class="pre">celery.result.EagerResult</span></tt></a> instance.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.execute.apply_async">
+<tt class="descclassname">celery.execute.</tt><tt class="descname">apply_async</tt><big>(</big><em>task</em>, <em>args=None</em>, <em>kwargs=None</em>, <em>countdown=None</em>, <em>eta=None</em>, <em>routing_key=None</em>, <em>exchange=None</em>, <em>task_id=None</em>, <em>immediate=None</em>, <em>mandatory=None</em>, <em>priority=None</em>, <em>connection=None</em>, <em>connect_timeout=4</em>, <em>**opts</em><big>)</big><a class="headerlink" href="#celery.execute.apply_async" title="Permalink to this definition">¶</a></dt>
+<dd><p>Run a task asynchronously by the celery daemon(s).</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>task</em> &#8211; The task to run (a callable object, or a <tt class="xref docutils literal"><span class="pre">Task</span></tt>
+instance</li>
+<li><em>args</em> &#8211; The positional arguments to pass on to the task (a <tt class="docutils literal"><span class="pre">list</span></tt>).</li>
+<li><em>kwargs</em> &#8211; The keyword arguments to pass on to the task (a <tt class="docutils literal"><span class="pre">dict</span></tt>)</li>
+<li><em>countdown</em> &#8211; Number of seconds into the future that the task should
+execute. Defaults to immediate delivery (Do not confuse that with
+the <tt class="docutils literal"><span class="pre">immediate</span></tt> setting, they are unrelated).</li>
+<li><em>eta</em> &#8211; A <tt class="xref docutils literal"><span class="pre">datetime.datetime</span></tt> object that describes the
+absolute time when the task should execute. May not be specified
+if <tt class="docutils literal"><span class="pre">countdown</span></tt> is also supplied. (Do not confuse this with the
+<tt class="docutils literal"><span class="pre">immediate</span></tt> setting, they are unrelated).</li>
+<li><em>routing_key</em> &#8211; The routing key used to route the task to a worker
+server.</li>
+<li><em>exchange</em> &#8211; The named exchange to send the task to. Defaults to
+<a title="celery.task.base.Task.exchange" class="reference external" href="celery.task.base.html#celery.task.base.Task.exchange"><tt class="xref docutils literal"><span class="pre">celery.task.base.Task.exchange</span></tt></a>.</li>
+<li><em>immediate</em> &#8211; Request immediate delivery. Will raise an exception
+if the task cannot be routed to a worker immediately.
+(Do not confuse this parameter with the <tt class="docutils literal"><span class="pre">countdown</span></tt> and <tt class="docutils literal"><span class="pre">eta</span></tt>
+settings, as they are unrelated).</li>
+<li><em>mandatory</em> &#8211; Mandatory routing. Raises an exception if there&#8217;s
+no running workers able to take on this task.</li>
+<li><em>connection</em> &#8211; Re-use existing AMQP connection.
+The <tt class="docutils literal"><span class="pre">connect_timeout</span></tt> argument is not respected if this is set.</li>
+<li><em>connect_timeout</em> &#8211; The timeout in seconds, before we give up
+on establishing a connection to the AMQP server.</li>
+<li><em>priority</em> &#8211; The task priority, a number between <tt class="docutils literal"><span class="pre">0</span></tt> and <tt class="docutils literal"><span class="pre">9</span></tt>.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.execute.delay_task">
+<tt class="descclassname">celery.execute.</tt><tt class="descname">delay_task</tt><big>(</big><em>task_name</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.execute.delay_task" title="Permalink to this definition">¶</a></dt>
+<dd><p>Delay a task for execution by the <tt class="docutils literal"><span class="pre">celery</span></tt> daemon.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><em>task_name</em> &#8211; the name of a task registered in the task registry.</li>
+<li><em>*args</em> &#8211; positional arguments to pass on to the task.</li>
+<li><em>**kwargs</em> &#8211; keyword arguments to pass on to the task.</li>
+</ul>
+</td>
+</tr>
+<tr class="field"><th class="field-name" colspan="2">Raises <a title="celery.exceptions.NotRegistered" class="reference external" href="celery.exceptions.html#celery.exceptions.NotRegistered">celery.exceptions.NotRegistered</a>:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body"><p class="first">exception if no such task
+has been registered in the task registry.</p>
+</td>
+</tr>
+<tr class="field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a title="celery.result.AsyncResult" class="reference external" href="celery.result.html#celery.result.AsyncResult"><tt class="xref docutils literal"><span class="pre">celery.result.AsyncResult</span></tt></a>.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Example</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">r</span> <span class="o">=</span> <span class="n">delay_task</span><span class="p">(</span><span class="s">&quot;update_record&quot;</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s">&quot;George Constanza&quot;</span><span class="p">,</span> <span class="n">age</span><span class="o">=</span><span class="mf">32</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span><span class="o">.</span><span class="n">ready</span><span class="p">()</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span><span class="o">.</span><span class="n">result</span>
+<span class="go">&quot;Record was updated&quot;</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.task.base.html"
+                                  title="previous chapter">Defining Tasks - celery.task.base</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.result.html"
+                                  title="next chapter">Task Result - celery.result</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.execute.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.result.html" title="Task Result - celery.result"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.task.base.html" title="Defining Tasks - celery.task.base"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 151 - 0
reference/celery.fields.html

@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Django Fields - celery.fields &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Celery Worker Daemon - celery.bin.celeryd" href="celery.bin.celeryd.html" />
+    <link rel="prev" title="Django Models - celery.models" href="celery.models.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.bin.celeryd.html" title="Celery Worker Daemon - celery.bin.celeryd"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.models.html" title="Django Models - celery.models"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.fields">
+<h1>Django Fields - celery.fields<a class="headerlink" href="#module-celery.fields" title="Permalink to this headline">¶</a></h1>
+<p>Custom Django Model Fields.</p>
+<dl class="class">
+<dt id="celery.fields.PickledObject">
+<em class="property">
+class </em><tt class="descclassname">celery.fields.</tt><tt class="descname">PickledObject</tt><a class="headerlink" href="#celery.fields.PickledObject" title="Permalink to this definition">¶</a></dt>
+<dd>A subclass of string so it can be told whether a string is
+a pickled object or not (if the object is an instance of this class
+then it must [well, should] be a pickled one).</dd></dl>
+
+<dl class="class">
+<dt id="celery.fields.PickledObjectField">
+<em class="property">
+class </em><tt class="descclassname">celery.fields.</tt><tt class="descname">PickledObjectField</tt><big>(</big><em>verbose_name=None</em>, <em>name=None</em>, <em>primary_key=False</em>, <em>max_length=None</em>, <em>unique=False</em>, <em>blank=False</em>, <em>null=False</em>, <em>db_index=False</em>, <em>rel=None</em>, <em>default=&lt;class django.db.models.fields.NOT_PROVIDED at 0x214ce70&gt;</em>, <em>editable=True</em>, <em>serialize=True</em>, <em>unique_for_date=None</em>, <em>unique_for_month=None</em>, <em>unique_for_year=None</em>, <em>choices=None</em>, <em>help_text=''</em>, <em>db_column=None</em>, <em>db_tablespace=None</em>, <em>auto_created=False</em><big>)</big><a class="headerlink" href="#celery.fields.PickledObjectField" title="Permalink to this definition">¶</a></dt>
+<dd><p>A field that automatically pickles/unpickles its value.</p>
+<dl class="method">
+<dt id="celery.fields.PickledObjectField.get_db_prep_lookup">
+<tt class="descname">get_db_prep_lookup</tt><big>(</big><em>lookup_type</em>, <em>value</em><big>)</big><a class="headerlink" href="#celery.fields.PickledObjectField.get_db_prep_lookup" title="Permalink to this definition">¶</a></dt>
+<dd>get_db_prep_lookup</dd></dl>
+
+<dl class="method">
+<dt id="celery.fields.PickledObjectField.get_db_prep_save">
+<tt class="descname">get_db_prep_save</tt><big>(</big><em>value</em><big>)</big><a class="headerlink" href="#celery.fields.PickledObjectField.get_db_prep_save" title="Permalink to this definition">¶</a></dt>
+<dd>get_db_prep_save</dd></dl>
+
+<dl class="method">
+<dt id="celery.fields.PickledObjectField.get_internal_type">
+<tt class="descname">get_internal_type</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.fields.PickledObjectField.get_internal_type" title="Permalink to this definition">¶</a></dt>
+<dd>The database field type used by this field.</dd></dl>
+
+<dl class="method">
+<dt id="celery.fields.PickledObjectField.to_python">
+<tt class="descname">to_python</tt><big>(</big><em>value</em><big>)</big><a class="headerlink" href="#celery.fields.PickledObjectField.to_python" title="Permalink to this definition">¶</a></dt>
+<dd>Convert the database value to a python value.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.models.html"
+                                  title="previous chapter">Django Models - celery.models</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.bin.celeryd.html"
+                                  title="next chapter">Celery Worker Daemon - celery.bin.celeryd</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.fields.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.bin.celeryd.html" title="Celery Worker Daemon - celery.bin.celeryd"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.models.html" title="Django Models - celery.models"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 156 - 0
reference/celery.loaders.base.html

@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Loader Base Classes - celery.loaders.base &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Default Loader - celery.loaders.default" href="celery.loaders.default.html" />
+    <link rel="prev" title="Loaders - celery.loaders" href="celery.loaders.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.default.html" title="Default Loader - celery.loaders.default"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.html" title="Loaders - celery.loaders"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.loaders.base">
+<h1>Loader Base Classes - celery.loaders.base<a class="headerlink" href="#module-celery.loaders.base" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="celery.loaders.base.BaseLoader">
+<em class="property">
+class </em><tt class="descclassname">celery.loaders.base.</tt><tt class="descname">BaseLoader</tt><a class="headerlink" href="#celery.loaders.base.BaseLoader" title="Permalink to this definition">¶</a></dt>
+<dd><p>The base class for loaders.</p>
+<p>Loaders handles to following things:</p>
+<ul>
+<li><p class="first">Reading celery client/worker configurations.</p>
+</li>
+<li><dl class="first docutils">
+<dt>What happens when a task starts?</dt>
+<dd><p class="first last">See <a title="celery.loaders.base.BaseLoader.on_task_init" class="reference internal" href="#celery.loaders.base.BaseLoader.on_task_init"><tt class="xref docutils literal"><span class="pre">on_task_init()</span></tt></a>.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>What happens when the worker starts?</dt>
+<dd><p class="first last">See <a title="celery.loaders.base.BaseLoader.on_worker_init" class="reference internal" href="#celery.loaders.base.BaseLoader.on_worker_init"><tt class="xref docutils literal"><span class="pre">on_worker_init()</span></tt></a>.</p>
+</dd>
+</dl>
+</li>
+<li><p class="first">What modules are imported to find tasks?</p>
+</li>
+</ul>
+<dl class="attribute">
+<dt id="celery.loaders.base.BaseLoader.conf">
+<tt class="descname">conf</tt><a class="headerlink" href="#celery.loaders.base.BaseLoader.conf" title="Permalink to this definition">¶</a></dt>
+<dd>Loader configuration.</dd></dl>
+
+<dl class="method">
+<dt id="celery.loaders.base.BaseLoader.on_task_init">
+<tt class="descname">on_task_init</tt><big>(</big><em>task_id</em>, <em>task</em><big>)</big><a class="headerlink" href="#celery.loaders.base.BaseLoader.on_task_init" title="Permalink to this definition">¶</a></dt>
+<dd>This method is called before a task is executed.</dd></dl>
+
+<dl class="method">
+<dt id="celery.loaders.base.BaseLoader.on_worker_init">
+<tt class="descname">on_worker_init</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.loaders.base.BaseLoader.on_worker_init" title="Permalink to this definition">¶</a></dt>
+<dd>This method is called when the worker (<tt class="docutils literal"><span class="pre">celeryd</span></tt>) starts.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.loaders.html"
+                                  title="previous chapter">Loaders - celery.loaders</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.loaders.default.html"
+                                  title="next chapter">Default Loader - celery.loaders.default</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.loaders.base.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.default.html" title="Default Loader - celery.loaders.default"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.html" title="Loaders - celery.loaders"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 138 - 0
reference/celery.loaders.default.html

@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Default Loader - celery.loaders.default &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Django Loader - celery.loaders.djangoapp" href="celery.loaders.djangoapp.html" />
+    <link rel="prev" title="Loader Base Classes - celery.loaders.base" href="celery.loaders.base.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.djangoapp.html" title="Django Loader - celery.loaders.djangoapp"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.base.html" title="Loader Base Classes - celery.loaders.base"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.loaders.default">
+<h1>Default Loader - celery.loaders.default<a class="headerlink" href="#module-celery.loaders.default" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="celery.loaders.default.Loader">
+<em class="property">
+class </em><tt class="descclassname">celery.loaders.default.</tt><tt class="descname">Loader</tt><a class="headerlink" href="#celery.loaders.default.Loader" title="Permalink to this definition">¶</a></dt>
+<dd><p>The default loader.</p>
+<p>See the FAQ for example usage.</p>
+<dl class="method">
+<dt id="celery.loaders.default.Loader.on_worker_init">
+<tt class="descname">on_worker_init</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.loaders.default.Loader.on_worker_init" title="Permalink to this definition">¶</a></dt>
+<dd><p>Imports modules at worker init so tasks can be registered
+and used by the worked.</p>
+<p>The list of modules to import is taken from the <tt class="docutils literal"><span class="pre">CELERY_IMPORTS</span></tt>
+setting in <tt class="docutils literal"><span class="pre">celeryconf.py</span></tt>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.loaders.default.Loader.read_configuration">
+<tt class="descname">read_configuration</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.loaders.default.Loader.read_configuration" title="Permalink to this definition">¶</a></dt>
+<dd>Read configuration from <tt class="docutils literal"><span class="pre">celeryconf.py</span></tt> and configure
+celery and Django so it can be used by regular Python.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.loaders.base.html"
+                                  title="previous chapter">Loader Base Classes - celery.loaders.base</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.loaders.djangoapp.html"
+                                  title="next chapter">Django Loader - celery.loaders.djangoapp</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.loaders.default.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.djangoapp.html" title="Django Loader - celery.loaders.djangoapp"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.base.html" title="Loader Base Classes - celery.loaders.base"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 144 - 0
reference/celery.loaders.djangoapp.html

@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Django Loader - celery.loaders.djangoapp &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Task Discovery - celery.discovery" href="celery.discovery.html" />
+    <link rel="prev" title="Default Loader - celery.loaders.default" href="celery.loaders.default.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.discovery.html" title="Task Discovery - celery.discovery"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.default.html" title="Default Loader - celery.loaders.default"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.loaders.djangoapp">
+<h1>Django Loader - celery.loaders.djangoapp<a class="headerlink" href="#module-celery.loaders.djangoapp" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="celery.loaders.djangoapp.Loader">
+<em class="property">
+class </em><tt class="descclassname">celery.loaders.djangoapp.</tt><tt class="descname">Loader</tt><a class="headerlink" href="#celery.loaders.djangoapp.Loader" title="Permalink to this definition">¶</a></dt>
+<dd><p>The Django loader.</p>
+<dl class="method">
+<dt id="celery.loaders.djangoapp.Loader.on_task_init">
+<tt class="descname">on_task_init</tt><big>(</big><em>task_id</em>, <em>task</em><big>)</big><a class="headerlink" href="#celery.loaders.djangoapp.Loader.on_task_init" title="Permalink to this definition">¶</a></dt>
+<dd><p>This method is called before a task is executed.</p>
+<p>Does everything necessary for Django to work in a long-living,
+multiprocessing environment.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.loaders.djangoapp.Loader.on_worker_init">
+<tt class="descname">on_worker_init</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.loaders.djangoapp.Loader.on_worker_init" title="Permalink to this definition">¶</a></dt>
+<dd><p>Called when the worker starts.</p>
+<p>Uses <a title="celery.discovery.autodiscover" class="reference external" href="celery.discovery.html#celery.discovery.autodiscover"><tt class="xref docutils literal"><span class="pre">celery.discovery.autodiscover()</span></tt></a> to automatically discover
+any <tt class="docutils literal"><span class="pre">tasks.py</span></tt> files in the applications listed in
+<tt class="docutils literal"><span class="pre">INSTALLED_APPS</span></tt>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.loaders.djangoapp.Loader.read_configuration">
+<tt class="descname">read_configuration</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.loaders.djangoapp.Loader.read_configuration" title="Permalink to this definition">¶</a></dt>
+<dd>Load configuration from Django settings.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.loaders.default.html"
+                                  title="previous chapter">Default Loader - celery.loaders.default</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.discovery.html"
+                                  title="next chapter">Task Discovery - celery.discovery</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.loaders.djangoapp.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.discovery.html" title="Task Discovery - celery.discovery"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.default.html" title="Default Loader - celery.loaders.default"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 115 - 0
reference/celery.loaders.html

@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Loaders - celery.loaders &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Loader Base Classes - celery.loaders.base" href="celery.loaders.base.html" />
+    <link rel="prev" title="Common Task Strategies - celery.task.strategy" href="celery.task.strategy.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.base.html" title="Loader Base Classes - celery.loaders.base"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.task.strategy.html" title="Common Task Strategies - celery.task.strategy"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.loaders">
+<h1>Loaders - celery.loaders<a class="headerlink" href="#module-celery.loaders" title="Permalink to this headline">¶</a></h1>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.task.strategy.html"
+                                  title="previous chapter">Common Task Strategies - celery.task.strategy</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.loaders.base.html"
+                                  title="next chapter">Loader Base Classes - celery.loaders.base</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.loaders.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.base.html" title="Loader Base Classes - celery.loaders.base"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.task.strategy.html" title="Common Task Strategies - celery.task.strategy"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 131 - 0
reference/celery.log.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Logging - celery.log &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Multiprocessing Worker - celery.worker" href="celery.utils.html" />
+    <link rel="prev" title="Datastructures - celery.datastructures" href="celery.datastructures.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.utils.html" title="Multiprocessing Worker - celery.worker"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.datastructures.html" title="Datastructures - celery.datastructures"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.log">
+<h1>Logging - celery.log<a class="headerlink" href="#module-celery.log" title="Permalink to this headline">¶</a></h1>
+<p>celery.log</p>
+<dl class="function">
+<dt id="celery.log.emergency_error">
+<tt class="descclassname">celery.log.</tt><tt class="descname">emergency_error</tt><big>(</big><em>logfile</em>, <em>message</em><big>)</big><a class="headerlink" href="#celery.log.emergency_error" title="Permalink to this definition">¶</a></dt>
+<dd>Emergency error logging, for when there&#8217;s no standard file
+descriptors open because the process has been daemonized or for
+some other reason.</dd></dl>
+
+<dl class="function">
+<dt id="celery.log.setup_logger">
+<tt class="descclassname">celery.log.</tt><tt class="descname">setup_logger</tt><big>(</big><em>loglevel=20</em>, <em>logfile=None</em>, <em>format='</em><span class="optional">[</span>, <em>%(asctime)s: %(levelname)s/%(processName)s</em><span class="optional">]</span>, <em>%(message)s'</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.log.setup_logger" title="Permalink to this definition">¶</a></dt>
+<dd><p>Setup the <tt class="docutils literal"><span class="pre">multiprocessing</span></tt> logger. If <tt class="docutils literal"><span class="pre">logfile</span></tt> is not specified,
+<tt class="docutils literal"><span class="pre">stderr</span></tt> is used.</p>
+<p>Returns logger object.</p>
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.datastructures.html"
+                                  title="previous chapter">Datastructures - celery.datastructures</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.utils.html"
+                                  title="next chapter">Multiprocessing Worker - celery.worker</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.log.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.utils.html" title="Multiprocessing Worker - celery.worker"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.datastructures.html" title="Datastructures - celery.datastructures"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 265 - 0
reference/celery.managers.html

@@ -0,0 +1,265 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Django Model Managers - celery.managers &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Django Models - celery.models" href="celery.models.html" />
+    <link rel="prev" title="Django Views - celery.views" href="celery.views.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.models.html" title="Django Models - celery.models"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.views.html" title="Django Views - celery.views"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.managers">
+<h1>Django Model Managers - celery.managers<a class="headerlink" href="#module-celery.managers" title="Permalink to this headline">¶</a></h1>
+<p>celery.managers</p>
+<dl class="class">
+<dt id="celery.managers.MySQLTableLock">
+<em class="property">
+class </em><tt class="descclassname">celery.managers.</tt><tt class="descname">MySQLTableLock</tt><big>(</big><em>table</em>, <em>type='read'</em><big>)</big><a class="headerlink" href="#celery.managers.MySQLTableLock" title="Permalink to this definition">¶</a></dt>
+<dd><p>Table lock support for MySQL.</p>
+<dl class="method">
+<dt id="celery.managers.MySQLTableLock.lock_table">
+<tt class="descname">lock_table</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.managers.MySQLTableLock.lock_table" title="Permalink to this definition">¶</a></dt>
+<dd>Lock MySQL table.</dd></dl>
+
+<dl class="method">
+<dt id="celery.managers.MySQLTableLock.unlock_table">
+<tt class="descname">unlock_table</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.managers.MySQLTableLock.unlock_table" title="Permalink to this definition">¶</a></dt>
+<dd>Unlock MySQL table.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.managers.PeriodicTaskManager">
+<em class="property">
+class </em><tt class="descclassname">celery.managers.</tt><tt class="descname">PeriodicTaskManager</tt><a class="headerlink" href="#celery.managers.PeriodicTaskManager" title="Permalink to this definition">¶</a></dt>
+<dd><p>Manager for <tt class="xref docutils literal"><span class="pre">celery.models.PeriodicTask</span></tt> models.</p>
+<dl class="method">
+<dt id="celery.managers.PeriodicTaskManager.get_waiting_tasks">
+<tt class="descname">get_waiting_tasks</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.managers.PeriodicTaskManager.get_waiting_tasks" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get all waiting periodic tasks.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">list of <tt class="xref docutils literal"><span class="pre">celery.models.PeriodicTaskMeta</span></tt> objects.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.managers.PeriodicTaskManager.init_entries">
+<tt class="descname">init_entries</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.managers.PeriodicTaskManager.init_entries" title="Permalink to this definition">¶</a></dt>
+<dd><p>Add entries for all registered periodic tasks.</p>
+<p>Should be run at worker start.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.managers.PeriodicTaskManager.is_time">
+<tt class="descname">is_time</tt><big>(</big><em>last_run_at</em>, <em>run_every</em><big>)</big><a class="headerlink" href="#celery.managers.PeriodicTaskManager.is_time" title="Permalink to this definition">¶</a></dt>
+<dd><p>Check if if it is time to run the periodic task.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><em>last_run_at</em> &#8211; Last time the periodic task was run.</li>
+<li><em>run_every</em> &#8211; How often to run the periodic task.</li>
+</ul>
+</td>
+</tr>
+<tr class="field"><th class="field-name">Rtype bool:</th><td class="field-body"></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.managers.TableLock">
+<em class="property">
+class </em><tt class="descclassname">celery.managers.</tt><tt class="descname">TableLock</tt><big>(</big><em>table</em>, <em>type='read'</em><big>)</big><a class="headerlink" href="#celery.managers.TableLock" title="Permalink to this definition">¶</a></dt>
+<dd><p>Base class for database table locks. Also works as a NOOP lock.</p>
+<dl class="classmethod">
+<dt id="celery.managers.TableLock.acquire">
+<em class="property">
+classmethod </em><tt class="descname">acquire</tt><big>(</big><em>table</em>, <em>type=None</em><big>)</big><a class="headerlink" href="#celery.managers.TableLock.acquire" title="Permalink to this definition">¶</a></dt>
+<dd>Acquire table lock.</dd></dl>
+
+<dl class="method">
+<dt id="celery.managers.TableLock.lock_table">
+<tt class="descname">lock_table</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.managers.TableLock.lock_table" title="Permalink to this definition">¶</a></dt>
+<dd>Lock the table.</dd></dl>
+
+<dl class="method">
+<dt id="celery.managers.TableLock.release">
+<tt class="descname">release</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.managers.TableLock.release" title="Permalink to this definition">¶</a></dt>
+<dd>Release the lock.</dd></dl>
+
+<dl class="method">
+<dt id="celery.managers.TableLock.unlock_table">
+<tt class="descname">unlock_table</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.managers.TableLock.unlock_table" title="Permalink to this definition">¶</a></dt>
+<dd>Release previously locked tables.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.managers.TaskManager">
+<em class="property">
+class </em><tt class="descclassname">celery.managers.</tt><tt class="descname">TaskManager</tt><a class="headerlink" href="#celery.managers.TaskManager" title="Permalink to this definition">¶</a></dt>
+<dd><p>Manager for <tt class="xref docutils literal"><span class="pre">celery.models.Task</span></tt> models.</p>
+<dl class="method">
+<dt id="celery.managers.TaskManager.delete_expired">
+<tt class="descname">delete_expired</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.managers.TaskManager.delete_expired" title="Permalink to this definition">¶</a></dt>
+<dd>Delete all expired task results.</dd></dl>
+
+<dl class="method">
+<dt id="celery.managers.TaskManager.get_all_expired">
+<tt class="descname">get_all_expired</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.managers.TaskManager.get_all_expired" title="Permalink to this definition">¶</a></dt>
+<dd>Get all expired task results.</dd></dl>
+
+<dl class="method">
+<dt id="celery.managers.TaskManager.get_task">
+<tt class="descname">get_task</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.managers.TaskManager.get_task" title="Permalink to this definition">¶</a></dt>
+<dd>Get task meta for task by <tt class="docutils literal"><span class="pre">task_id</span></tt>.</dd></dl>
+
+<dl class="method">
+<dt id="celery.managers.TaskManager.is_done">
+<tt class="descname">is_done</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.managers.TaskManager.is_done" title="Permalink to this definition">¶</a></dt>
+<dd>Returns <tt class="xref docutils literal"><span class="pre">True</span></tt> if the task was executed successfully.</dd></dl>
+
+<dl class="method">
+<dt id="celery.managers.TaskManager.store_result">
+<tt class="descname">store_result</tt><big>(</big><em>task_id</em>, <em>result</em>, <em>status</em>, <em>traceback=None</em><big>)</big><a class="headerlink" href="#celery.managers.TaskManager.store_result" title="Permalink to this definition">¶</a></dt>
+<dd><p>Store the result and status of a task.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>task_id</em> &#8211; task id</li>
+<li><em>result</em> &#8211; The return value of the task, or an exception
+instance raised by the task.</li>
+<li><em>status</em> &#8211; Task status. See
+<tt class="xref docutils literal"><span class="pre">celery.result.AsyncResult.get_status()</span></tt> for a list of
+possible status values.</li>
+<li><em>traceback</em> &#8211; The traceback at the point of exception (if the
+task failed).</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.managers.table_lock">
+<tt class="descclassname">celery.managers.</tt><tt class="descname">table_lock</tt><a class="headerlink" href="#celery.managers.table_lock" title="Permalink to this definition">¶</a></dt>
+<dd>alias of <a title="celery.managers.TableLock" class="reference internal" href="#celery.managers.TableLock"><tt class="xref docutils literal"><span class="pre">TableLock</span></tt></a></dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.views.html"
+                                  title="previous chapter">Django Views - celery.views</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.models.html"
+                                  title="next chapter">Django Models - celery.models</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.managers.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.models.html" title="Django Models - celery.models"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.views.html" title="Django Views - celery.views"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 152 - 0
reference/celery.messaging.html

@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Messaging - celery.messaging &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Multiprocessing Worker - celery.worker" href="celery.worker.html" />
+    <link rel="prev" title="Statistics and Monitoring - celery.monitoring" href="celery.monitoring.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.html" title="Multiprocessing Worker - celery.worker"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.monitoring.html" title="Statistics and Monitoring - celery.monitoring"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.messaging">
+<h1>Messaging - celery.messaging<a class="headerlink" href="#module-celery.messaging" title="Permalink to this headline">¶</a></h1>
+<p>Sending and Receiving Messages</p>
+<dl class="class">
+<dt id="celery.messaging.TaskConsumer">
+<em class="property">
+class </em><tt class="descclassname">celery.messaging.</tt><tt class="descname">TaskConsumer</tt><big>(</big><em>connection</em>, <em>queue=None</em>, <em>exchange=None</em>, <em>routing_key=None</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.messaging.TaskConsumer" title="Permalink to this definition">¶</a></dt>
+<dd><p>The AMQP Task Consumer class.</p>
+<dl class="method">
+<dt id="celery.messaging.TaskConsumer.decoder">
+<tt class="descname">decoder</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.messaging.TaskConsumer.decoder" title="Permalink to this definition">¶</a></dt>
+<dd>loads(string) &#8211; Load a pickle from the given string</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.messaging.TaskPublisher">
+<em class="property">
+class </em><tt class="descclassname">celery.messaging.</tt><tt class="descname">TaskPublisher</tt><big>(</big><em>connection</em>, <em>exchange=None</em>, <em>routing_key=None</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.messaging.TaskPublisher" title="Permalink to this definition">¶</a></dt>
+<dd><p>The AMQP Task Publisher class.</p>
+<dl class="method">
+<dt id="celery.messaging.TaskPublisher.delay_task">
+<tt class="descname">delay_task</tt><big>(</big><em>task_name</em>, <em>task_args</em>, <em>task_kwargs</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.messaging.TaskPublisher.delay_task" title="Permalink to this definition">¶</a></dt>
+<dd>Delay task for execution by the celery nodes.</dd></dl>
+
+<dl class="method">
+<dt id="celery.messaging.TaskPublisher.delay_task_in_set">
+<tt class="descname">delay_task_in_set</tt><big>(</big><em>taskset_id</em>, <em>task_name</em>, <em>task_args</em>, <em>task_kwargs</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.messaging.TaskPublisher.delay_task_in_set" title="Permalink to this definition">¶</a></dt>
+<dd>Delay a task which part of a task set.</dd></dl>
+
+<dl class="method">
+<dt id="celery.messaging.TaskPublisher.encoder">
+<tt class="descname">encoder</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.messaging.TaskPublisher.encoder" title="Permalink to this definition">¶</a></dt>
+<dd><p>dumps(obj, protocol=0) &#8211; Return a string containing an object in pickle format.</p>
+<p>See the Pickler docstring for the meaning of optional argument proto.</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.monitoring.html"
+                                  title="previous chapter">Statistics and Monitoring - celery.monitoring</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.worker.html"
+                                  title="next chapter">Multiprocessing Worker - celery.worker</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.messaging.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.html" title="Multiprocessing Worker - celery.worker"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.monitoring.html" title="Statistics and Monitoring - celery.monitoring"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 212 - 0
reference/celery.models.html

@@ -0,0 +1,212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Django Models - celery.models &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Django Fields - celery.fields" href="celery.fields.html" />
+    <link rel="prev" title="Django Model Managers - celery.managers" href="celery.managers.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.fields.html" title="Django Fields - celery.fields"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.managers.html" title="Django Model Managers - celery.managers"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="django-models-celery-models">
+<h1>Django Models - celery.models<a class="headerlink" href="#django-models-celery-models" title="Permalink to this headline">¶</a></h1>
+<dl class="data">
+<dt id="TASK_STATUS_PENDING">
+<tt class="descname">TASK_STATUS_PENDING</tt><a class="headerlink" href="#TASK_STATUS_PENDING" title="Permalink to this definition">¶</a></dt>
+<dd>The string status of a pending task.</dd></dl>
+
+<dl class="data">
+<dt id="TASK_STATUS_RETRY">
+<tt class="descname">TASK_STATUS_RETRY</tt><a class="headerlink" href="#TASK_STATUS_RETRY" title="Permalink to this definition">¶</a></dt>
+<dd>The string status of a task which is to be retried.</dd></dl>
+
+<dl class="data">
+<dt id="TASK_STATUS_FAILURE">
+<tt class="descname">TASK_STATUS_FAILURE</tt><a class="headerlink" href="#TASK_STATUS_FAILURE" title="Permalink to this definition">¶</a></dt>
+<dd>The string status of a failed task.</dd></dl>
+
+<dl class="data">
+<dt id="TASK_STATUS_DONE">
+<tt class="descname">TASK_STATUS_DONE</tt><a class="headerlink" href="#TASK_STATUS_DONE" title="Permalink to this definition">¶</a></dt>
+<dd>The string status of a task that was successfully executed.</dd></dl>
+
+<dl class="data">
+<dt id="TASK_STATUSES">
+<tt class="descname">TASK_STATUSES</tt><a class="headerlink" href="#TASK_STATUSES" title="Permalink to this definition">¶</a></dt>
+<dd>List of possible task statuses.</dd></dl>
+
+<dl class="data">
+<dt id="TASK_STATUSES_CHOICES">
+<tt class="descname">TASK_STATUSES_CHOICES</tt><a class="headerlink" href="#TASK_STATUSES_CHOICES" title="Permalink to this definition">¶</a></dt>
+<dd>Django choice tuple of possible task statuses, for usage in model/form
+fields <tt class="docutils literal"><span class="pre">choices</span></tt> argument.</dd></dl>
+
+<dl class="class">
+<dt id="TaskMeta">
+<em class="property">
+class </em><tt class="descname">TaskMeta</tt><a class="headerlink" href="#TaskMeta" title="Permalink to this definition">¶</a></dt>
+<dd><p>Model for storing the result and status of a task.</p>
+<p><em>Note</em> Only used if you&#8217;re running the <tt class="docutils literal"><span class="pre">database</span></tt> backend.</p>
+<dl class="attribute">
+<dt id="TaskMeta.task_id">
+<tt class="descname">task_id</tt><a class="headerlink" href="#TaskMeta.task_id" title="Permalink to this definition">¶</a></dt>
+<dd>The unique task id.</dd></dl>
+
+<dl class="attribute">
+<dt id="TaskMeta.status">
+<tt class="descname">status</tt><a class="headerlink" href="#TaskMeta.status" title="Permalink to this definition">¶</a></dt>
+<dd>The current status for this task.</dd></dl>
+
+<dl class="attribute">
+<dt id="TaskMeta.result">
+<tt class="descname">result</tt><a class="headerlink" href="#TaskMeta.result" title="Permalink to this definition">¶</a></dt>
+<dd>The result after successful/failed execution. If the task failed,
+this contains the execption it raised.</dd></dl>
+
+<dl class="attribute">
+<dt id="TaskMeta.date_done">
+<tt class="descname">date_done</tt><a class="headerlink" href="#TaskMeta.date_done" title="Permalink to this definition">¶</a></dt>
+<dd>The date this task changed status.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="PeriodicTaskMeta">
+<em class="property">
+class </em><tt class="descname">PeriodicTaskMeta</tt><a class="headerlink" href="#PeriodicTaskMeta" title="Permalink to this definition">¶</a></dt>
+<dd><p>Metadata model for periodic tasks.</p>
+<dl class="attribute">
+<dt id="PeriodicTaskMeta.name">
+<tt class="descname">name</tt><a class="headerlink" href="#PeriodicTaskMeta.name" title="Permalink to this definition">¶</a></dt>
+<dd>The name of this task, as registered in the task registry.</dd></dl>
+
+<dl class="attribute">
+<dt id="PeriodicTaskMeta.last_run_at">
+<tt class="descname">last_run_at</tt><a class="headerlink" href="#PeriodicTaskMeta.last_run_at" title="Permalink to this definition">¶</a></dt>
+<dd>The date this periodic task was last run. Used to find out
+when it should be run next.</dd></dl>
+
+<dl class="attribute">
+<dt id="PeriodicTaskMeta.total_run_count">
+<tt class="descname">total_run_count</tt><a class="headerlink" href="#PeriodicTaskMeta.total_run_count" title="Permalink to this definition">¶</a></dt>
+<dd>The number of times this periodic task has been run.</dd></dl>
+
+<dl class="attribute">
+<dt id="PeriodicTaskMeta.task">
+<tt class="descname">task</tt><a class="headerlink" href="#PeriodicTaskMeta.task" title="Permalink to this definition">¶</a></dt>
+<dd>The class/function for this task.</dd></dl>
+
+<dl class="method">
+<dt id="PeriodicTaskMeta.delay">
+<tt class="descname">delay</tt><big>(</big><big>)</big><a class="headerlink" href="#PeriodicTaskMeta.delay" title="Permalink to this definition">¶</a></dt>
+<dt>
+<tt class="descname">Delay the execution of a periodic task, and increment its total</tt></dt>
+<dt>
+<tt class="descname">run count.</tt></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.managers.html"
+                                  title="previous chapter">Django Model Managers - celery.managers</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.fields.html"
+                                  title="next chapter">Django Fields - celery.fields</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.models.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.fields.html" title="Django Fields - celery.fields"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.managers.html" title="Django Model Managers - celery.managers"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 311 - 0
reference/celery.monitoring.html

@@ -0,0 +1,311 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Statistics and Monitoring - celery.monitoring &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Messaging - celery.messaging" href="celery.messaging.html" />
+    <link rel="prev" title="Task Discovery - celery.discovery" href="celery.discovery.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.messaging.html" title="Messaging - celery.messaging"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.discovery.html" title="Task Discovery - celery.discovery"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.monitoring">
+<h1>Statistics and Monitoring - celery.monitoring<a class="headerlink" href="#module-celery.monitoring" title="Permalink to this headline">¶</a></h1>
+<p>Publishing Statistics and Monitoring Celery.</p>
+<dl class="class">
+<dt id="celery.monitoring.Statistics">
+<em class="property">
+class </em><tt class="descclassname">celery.monitoring.</tt><tt class="descname">Statistics</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.monitoring.Statistics" title="Permalink to this definition">¶</a></dt>
+<dd><p>Base class for classes publishing celery statistics.</p>
+<dl class="attribute">
+<dt id="celery.monitoring.Statistics.type">
+<tt class="descname">type</tt><a class="headerlink" href="#celery.monitoring.Statistics.type" title="Permalink to this definition">¶</a></dt>
+<dd><strong>REQUIRED</strong> The type of statistics this class handles.</dd></dl>
+
+<p><strong>Required handlers</strong></p>
+<ul class="simple">
+<li>on_start()</li>
+<li>on_stop()</li>
+</ul>
+<dl class="method">
+<dt id="celery.monitoring.Statistics.on_start">
+<tt class="descname">on_start</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.monitoring.Statistics.on_start" title="Permalink to this definition">¶</a></dt>
+<dd>What to do when the <a title="celery.monitoring.Statistics.run" class="reference internal" href="#celery.monitoring.Statistics.run"><tt class="xref docutils literal"><span class="pre">run()</span></tt></a> method is called.</dd></dl>
+
+<dl class="method">
+<dt id="celery.monitoring.Statistics.on_stop">
+<tt class="descname">on_stop</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.monitoring.Statistics.on_stop" title="Permalink to this definition">¶</a></dt>
+<dd>What to do when the <a title="celery.monitoring.Statistics.stop" class="reference internal" href="#celery.monitoring.Statistics.stop"><tt class="xref docutils literal"><span class="pre">stop()</span></tt></a> method is called.</dd></dl>
+
+<dl class="method">
+<dt id="celery.monitoring.Statistics.publish">
+<tt class="descname">publish</tt><big>(</big><em>**data</em><big>)</big><a class="headerlink" href="#celery.monitoring.Statistics.publish" title="Permalink to this definition">¶</a></dt>
+<dd><p>Publish statistics to be collected later by
+<a title="celery.monitoring.StatsCollector" class="reference internal" href="#celery.monitoring.StatsCollector"><tt class="xref docutils literal"><span class="pre">StatsCollector</span></tt></a>.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>data</em> &#8211; An arbitrary Python object containing the statistics
+to be published.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.monitoring.Statistics.run">
+<tt class="descname">run</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.monitoring.Statistics.run" title="Permalink to this definition">¶</a></dt>
+<dd>Start producing statistics.</dd></dl>
+
+<dl class="classmethod">
+<dt id="celery.monitoring.Statistics.start">
+<em class="property">
+classmethod </em><tt class="descname">start</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.monitoring.Statistics.start" title="Permalink to this definition">¶</a></dt>
+<dd>Convenience method instantiating and running <a title="celery.monitoring.Statistics.run" class="reference internal" href="#celery.monitoring.Statistics.run"><tt class="xref docutils literal"><span class="pre">run()</span></tt></a> in
+one swoop.</dd></dl>
+
+<dl class="method">
+<dt id="celery.monitoring.Statistics.stop">
+<tt class="descname">stop</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.monitoring.Statistics.stop" title="Permalink to this definition">¶</a></dt>
+<dd>Stop producing and publish statistics.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.monitoring.StatsCollector">
+<em class="property">
+class </em><tt class="descclassname">celery.monitoring.</tt><tt class="descname">StatsCollector</tt><a class="headerlink" href="#celery.monitoring.StatsCollector" title="Permalink to this definition">¶</a></dt>
+<dd><p>Collect and report Celery statistics.</p>
+<dl class="docutils">
+<dt><strong>NOTE</strong>: Please run only one collector at any time, or your stats</dt>
+<dd>will be skewed.</dd>
+</dl>
+<dl class="attribute">
+<dt id="celery.monitoring.StatsCollector.total_tasks_processed">
+<tt class="descname">total_tasks_processed</tt><a class="headerlink" href="#celery.monitoring.StatsCollector.total_tasks_processed" title="Permalink to this definition">¶</a></dt>
+<dd>The number of tasks executed in total since the first time
+<a title="celery.monitoring.StatsCollector.collect" class="reference internal" href="#celery.monitoring.StatsCollector.collect"><tt class="xref docutils literal"><span class="pre">collect()</span></tt></a> was executed on this class instance.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.monitoring.StatsCollector.total_tasks_processed_by_type">
+<tt class="descname">total_tasks_processed_by_type</tt><a class="headerlink" href="#celery.monitoring.StatsCollector.total_tasks_processed_by_type" title="Permalink to this definition">¶</a></dt>
+<dd>A dictionary of task names and how many times they have been
+executed in total since the first time <a title="celery.monitoring.StatsCollector.collect" class="reference internal" href="#celery.monitoring.StatsCollector.collect"><tt class="xref docutils literal"><span class="pre">collect()</span></tt></a> was executed
+on this class instance.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.monitoring.StatsCollector.total_task_time_running">
+<tt class="descname">total_task_time_running</tt><a class="headerlink" href="#celery.monitoring.StatsCollector.total_task_time_running" title="Permalink to this definition">¶</a></dt>
+<dd>The total time, in seconds, it took to process all the tasks executed
+since the first time <a title="celery.monitoring.StatsCollector.collect" class="reference internal" href="#celery.monitoring.StatsCollector.collect"><tt class="xref docutils literal"><span class="pre">collect()</span></tt></a> was executed on this class
+instance.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.monitoring.StatsCollector.total_task_time_running_by_type">
+<tt class="descname">total_task_time_running_by_type</tt><a class="headerlink" href="#celery.monitoring.StatsCollector.total_task_time_running_by_type" title="Permalink to this definition">¶</a></dt>
+<dd>A dictionary of task names and their total running time in seconds,
+counting all the tasks that has been run since the first time
+<a title="celery.monitoring.StatsCollector.collect" class="reference internal" href="#celery.monitoring.StatsCollector.collect"><tt class="xref docutils literal"><span class="pre">collect()</span></tt></a> was executed on this class instance.</dd></dl>
+
+<dl class="docutils">
+<dt><strong>NOTE</strong>: You have to run <a title="celery.monitoring.StatsCollector.collect" class="reference internal" href="#celery.monitoring.StatsCollector.collect"><tt class="xref docutils literal"><span class="pre">collect()</span></tt></a> for these attributes</dt>
+<dd>to be filled.</dd>
+</dl>
+<dl class="method">
+<dt id="celery.monitoring.StatsCollector.collect">
+<tt class="descname">collect</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.monitoring.StatsCollector.collect" title="Permalink to this definition">¶</a></dt>
+<dd>Collect any new statistics available since the last time
+<a title="celery.monitoring.StatsCollector.collect" class="reference internal" href="#celery.monitoring.StatsCollector.collect"><tt class="xref docutils literal"><span class="pre">collect()</span></tt></a> was executed.</dd></dl>
+
+<dl class="method">
+<dt id="celery.monitoring.StatsCollector.dump_to_cache">
+<tt class="descname">dump_to_cache</tt><big>(</big><em>cache_key_prefix='celery-statistics'</em><big>)</big><a class="headerlink" href="#celery.monitoring.StatsCollector.dump_to_cache" title="Permalink to this definition">¶</a></dt>
+<dd>Store collected statistics in the cache.</dd></dl>
+
+<dl class="method">
+<dt id="celery.monitoring.StatsCollector.report">
+<tt class="descname">report</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.monitoring.StatsCollector.report" title="Permalink to this definition">¶</a></dt>
+<dd><p>Dump a nice statistics report from the data collected since
+the first time <a title="celery.monitoring.StatsCollector.collect" class="reference internal" href="#celery.monitoring.StatsCollector.collect"><tt class="xref docutils literal"><span class="pre">collect()</span></tt></a> was executed on this instance.</p>
+<p>It outputs the following information:</p>
+<ul>
+<li><dl class="first docutils">
+<dt>Total processing time by task type and how many times each</dt>
+<dd><p class="first last">task has been excuted.</p>
+</dd>
+</dl>
+</li>
+<li><p class="first">Total task processing time.</p>
+</li>
+<li><p class="first">Total number of tasks executed</p>
+</li>
+</ul>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.monitoring.StatsCollector.task_time_running">
+<tt class="descname">task_time_running</tt><big>(</big><em>task_id</em>, <em>task_name</em>, <em>args</em>, <em>kwargs</em>, <em>nsecs</em><big>)</big><a class="headerlink" href="#celery.monitoring.StatsCollector.task_time_running" title="Permalink to this definition">¶</a></dt>
+<dd><p>Process statistics regarding how long a task has been running
+(the :class:TaskTimerStats` class is responsible for sending these).</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>task_id</em> &#8211; The UUID of the task.</li>
+<li><em>task_name</em> &#8211; The name of task.</li>
+<li><em>args</em> &#8211; The tasks positional arguments.</li>
+<li><em>kwargs</em> &#8211; The tasks keyword arguments.</li>
+<li><em>nsecs</em> &#8211; The number of seconds (in <tt class="xref docutils literal"><span class="pre">time.time()</span></tt> format)
+it took to execute the task.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.monitoring.TaskTimerStats">
+<em class="property">
+class </em><tt class="descclassname">celery.monitoring.</tt><tt class="descname">TaskTimerStats</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.monitoring.TaskTimerStats" title="Permalink to this definition">¶</a></dt>
+<dd>Time a running <tt class="xref docutils literal"><span class="pre">celery.task.Task</span></tt>.</dd></dl>
+
+<dl class="class">
+<dt id="celery.monitoring.TimerStats">
+<em class="property">
+class </em><tt class="descclassname">celery.monitoring.</tt><tt class="descname">TimerStats</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.monitoring.TimerStats" title="Permalink to this definition">¶</a></dt>
+<dd><p>A generic timer producing <tt class="docutils literal"><span class="pre">celery</span></tt> statistics.</p>
+<dl class="attribute">
+<dt id="celery.monitoring.TimerStats.time_start">
+<tt class="descname">time_start</tt><a class="headerlink" href="#celery.monitoring.TimerStats.time_start" title="Permalink to this definition">¶</a></dt>
+<dd>The time when this class was instantiated (in <tt class="xref docutils literal"><span class="pre">time.time()</span></tt>
+format.)</dd></dl>
+
+<dl class="method">
+<dt id="celery.monitoring.TimerStats.on_finish">
+<tt class="descname">on_finish</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.monitoring.TimerStats.on_finish" title="Permalink to this definition">¶</a></dt>
+<dd><p>What to do when the timers <tt class="xref docutils literal"><span class="pre">stop()</span></tt> method is called.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the time in seconds it took between calling <tt class="xref docutils literal"><span class="pre">start()</span></tt> on
+this class and <tt class="xref docutils literal"><span class="pre">stop()</span></tt>.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.monitoring.TimerStats.on_start">
+<tt class="descname">on_start</tt><big>(</big><em>task_id</em>, <em>task_name</em>, <em>args</em>, <em>kwargs</em><big>)</big><a class="headerlink" href="#celery.monitoring.TimerStats.on_start" title="Permalink to this definition">¶</a></dt>
+<dd>What to do when the timers <tt class="xref docutils literal"><span class="pre">run()</span></tt> method is called.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.discovery.html"
+                                  title="previous chapter">Task Discovery - celery.discovery</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.messaging.html"
+                                  title="next chapter">Messaging - celery.messaging</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.monitoring.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.messaging.html" title="Messaging - celery.messaging"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.discovery.html" title="Task Discovery - celery.discovery"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 177 - 0
reference/celery.platform.html

@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Platform Specific - celery.platform &mdash; Celery v0.3.2 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/agogo.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    '../',
+      VERSION:     '0.3.2 (unstable)',
+      COLLAPSE_MODINDEX: false,
+      FILE_SUFFIX: '.html',
+      HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.3.2 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Timers - celery.timer" href="celery.timer.html" />
+    <link rel="prev" title="Messaging - celery.messaging" href="celery.messaging.html" /> 
+  </head>
+  <body>
+
+    <div class="header-wrapper">
+      <div class="header">
+	<h1><a href="../index.html">Celery v0.3.2 (unstable) documentation</a></h1>
+	<div class="rel">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a> |
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |
+          <a href="celery.timer.html" title="Timers - celery.timer"
+             accesskey="N">next</a> |
+          <a href="celery.messaging.html" title="Messaging - celery.messaging"
+             accesskey="P">previous</a>
+	</div>
+      </div>
+    </div>
+
+    <div class="content-wrapper">
+      <div class="content">
+	<div class="document">
+	  <div class="documentwrapper">
+	    <div class="bodywrapper">
+	      <div class="body">
+		
+  <div class="section" id="module-celery.platform">
+<h1>Platform Specific - celery.platform<a class="headerlink" href="#module-celery.platform" title="Permalink to this headline">¶</a></h1>
+<p>celery.platform</p>
+<dl class="class">
+<dt id="celery.platform.PIDFile">
+<em class="property">
+class </em><tt class="descclassname">celery.platform.</tt><tt class="descname">PIDFile</tt><big>(</big><em>pidfile</em><big>)</big><a class="headerlink" href="#celery.platform.PIDFile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Manages a pid file.</p>
+<dl class="method">
+<dt id="celery.platform.PIDFile.check">
+<tt class="descname">check</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.platform.PIDFile.check" title="Permalink to this definition">¶</a></dt>
+<dd><p>Check the status of the pidfile.</p>
+<p>If the pidfile exists, and the process is not running, it will
+remove the stale pidfile and continue as normal. If the process
+<em>is</em> running, it will exit the program with an error message.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.platform.PIDFile.get_pid">
+<tt class="descname">get_pid</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.platform.PIDFile.get_pid" title="Permalink to this definition">¶</a></dt>
+<dd>Get the process id stored in the pidfile.</dd></dl>
+
+<dl class="method">
+<dt id="celery.platform.PIDFile.remove">
+<tt class="descname">remove</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.platform.PIDFile.remove" title="Permalink to this definition">¶</a></dt>
+<dd>Remove the pidfile.</dd></dl>
+
+<dl class="method">
+<dt id="celery.platform.PIDFile.write">
+<tt class="descname">write</tt><big>(</big><em>pid=None</em><big>)</big><a class="headerlink" href="#celery.platform.PIDFile.write" title="Permalink to this definition">¶</a></dt>
+<dd><p>Write a pidfile.</p>
+<p>If <tt class="docutils literal"><span class="pre">pid</span></tt> is not specified the pid of the current process
+will be used.</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.platform.daemonize">
+<tt class="descclassname">celery.platform.</tt><tt class="descname">daemonize</tt><big>(</big><em>pidfile</em><big>)</big><a class="headerlink" href="#celery.platform.daemonize" title="Permalink to this definition">¶</a></dt>
+<dd>Detach a process from the controlling terminal and run it in the
+background as a daemon.</dd></dl>
+
+<dl class="function">
+<dt id="celery.platform.remove_pidfile">
+<tt class="descclassname">celery.platform.</tt><tt class="descname">remove_pidfile</tt><big>(</big><em>pidfile</em><big>)</big><a class="headerlink" href="#celery.platform.remove_pidfile" title="Permalink to this definition">¶</a></dt>
+<dd>Remove the pidfile.</dd></dl>
+
+</div>
+
+
+	      </div>
+	    </div>
+	  </div>
+	</div>
+	<div class="sidebar">
+	  <h3>Contents</h3>
+	  <ul class="current">
+<li class="toctree-l1"><a class="reference external" href="../introduction.html">celery - Distributed Task Queue for Django.</a></li>
+<li class="toctree-l1"><a class="reference external" href="../faq.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1 current"><a class="reference external" href="index.html">Module API Reference</a><ul class="current">
+<li class="toctree-l2"><a class="reference external" href="celery.task.html">Tasks - celery.task</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.result.html">Task Result - celery.result</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.registry.html">Task Registry - celery.registry</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.discovery.html">Task Discovery - celery.discovery</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.worker.html">Multiprocessing Worker - celery.worker</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.backends.html">Backends - celery.backends</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.backends.base.html">Backend: Base - celery.backends.base</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.backends.database.html">Backend: Database - celery.backends.database</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.backends.cache.html">Backend: Cache - celery.backends.cache</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.backends.tyrant.html">Backend: Tokyo Tyrant - celery.backends.tyrant</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.conf.html">Configuration - celery.conf</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.datastructures.html">Datastructures - celery.datastructures</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.log.html">Logging - celery.log</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.managers.html">Django Model Managers - celery.managers</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.models.html">Django Models - celery.models</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.messaging.html">Messaging - celery.messaging</a></li>
+<li class="toctree-l2 current"><a class="current reference external" href="">Platform Specific - celery.platform</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.timer.html">Timers - celery.timer</a></li>
+<li class="toctree-l2"><a class="reference external" href="celery.bin.celeryd.html">Celery Worker Daemon - celery.bin.celeryd</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="../changelog.html">Change history</a></li>
+</ul>
+
+	  <h3 style="margin-top: 1.5em;">Search</h3>
+	  <form class="search" action="../search.html" method="get">
+            <input type="text" name="q" size="18" />
+            <input type="submit" value="Go" />
+            <input type="hidden" name="check_keywords" value="yes" />
+            <input type="hidden" name="area" value="default" />
+          </form>
+          <p class="searchtip" style="font-size: 90%">
+            Enter search terms or a module, class or function name.
+          </p>
+	</div>
+	<div class="clearer"></div>
+      </div>
+    </div>
+
+    <div class="footer-wrapper">
+      <div class="footer">
+	<div class="left">
+          <a href="../genindex.html" title="General Index"
+             >index</a> |
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |
+          <a href="celery.timer.html" title="Timers - celery.timer"
+             >next</a> |
+          <a href="celery.messaging.html" title="Messaging - celery.messaging"
+             >previous</a>
+            <br/>
+            <a href="../sources/reference/celery.platform.txt"
+               rel="nofollow">Show Source</a>
+	</div>
+
+	<div class="right">
+	  &copy; Copyright 2009, Ask Solem.<br/>
+	  Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+	</div>
+	<div class="clearer"></div>
+      </div>
+    </div>
+
+  </body>
+</html>

+ 263 - 0
reference/celery.pool.html

@@ -0,0 +1,263 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Task Pool - celery.pool &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Process Supervisor - celery.supervisor" href="celery.supervisor.html" />
+    <link rel="prev" title="Worker Controller Threads - celery.worker.controllers" href="celery.worker.controllers.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.supervisor.html" title="Process Supervisor - celery.supervisor"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.controllers.html" title="Worker Controller Threads - celery.worker.controllers"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.pool">
+<h1>Task Pool - celery.pool<a class="headerlink" href="#module-celery.pool" title="Permalink to this headline">¶</a></h1>
+<p>Process Pools.</p>
+<dl class="class">
+<dt id="celery.pool.DynamicPool">
+<em class="property">
+class </em><tt class="descclassname">celery.pool.</tt><tt class="descname">DynamicPool</tt><big>(</big><em>processes=None</em>, <em>initializer=None</em>, <em>initargs=()</em><big>)</big><a class="headerlink" href="#celery.pool.DynamicPool" title="Permalink to this definition">¶</a></dt>
+<dd><p>Version of <tt class="xref docutils literal"><span class="pre">multiprocessing.Pool</span></tt> that can dynamically grow
+in size.</p>
+<dl class="method">
+<dt id="celery.pool.DynamicPool.add_worker">
+<tt class="descname">add_worker</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.pool.DynamicPool.add_worker" title="Permalink to this definition">¶</a></dt>
+<dd>Add another worker to the pool.</dd></dl>
+
+<dl class="method">
+<dt id="celery.pool.DynamicPool.grow">
+<tt class="descname">grow</tt><big>(</big><em>size=1</em><big>)</big><a class="headerlink" href="#celery.pool.DynamicPool.grow" title="Permalink to this definition">¶</a></dt>
+<dd><p>Add workers to the pool.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>size</em> &#8211; Number of workers to add (default: 1)</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.pool.DynamicPool.replace_dead_workers">
+<tt class="descname">replace_dead_workers</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.pool.DynamicPool.replace_dead_workers" title="Permalink to this definition">¶</a></dt>
+<dd><p>Replace dead workers in the pool by spawning new ones.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">number of dead processes replaced, or <tt class="xref docutils literal"><span class="pre">None</span></tt> if all
+processes are alive and running.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.pool.TaskPool">
+<em class="property">
+class </em><tt class="descclassname">celery.pool.</tt><tt class="descname">TaskPool</tt><big>(</big><em>limit</em>, <em>logger=None</em><big>)</big><a class="headerlink" href="#celery.pool.TaskPool" title="Permalink to this definition">¶</a></dt>
+<dd><p>Process Pool for processing tasks in parallel.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>limit</em> &#8211; see <a title="celery.pool.TaskPool.limit" class="reference internal" href="#celery.pool.TaskPool.limit"><tt class="xref docutils literal"><span class="pre">limit</span></tt></a> attribute.</li>
+<li><em>logger</em> &#8211; see <a title="celery.pool.TaskPool.logger" class="reference internal" href="#celery.pool.TaskPool.logger"><tt class="xref docutils literal"><span class="pre">logger</span></tt></a> attribute.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.pool.TaskPool.limit">
+<tt class="descname">limit</tt><a class="headerlink" href="#celery.pool.TaskPool.limit" title="Permalink to this definition">¶</a></dt>
+<dd>The number of processes that can run simultaneously.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.pool.TaskPool.logger">
+<tt class="descname">logger</tt><a class="headerlink" href="#celery.pool.TaskPool.logger" title="Permalink to this definition">¶</a></dt>
+<dd>The logger used for debugging.</dd></dl>
+
+<dl class="method">
+<dt id="celery.pool.TaskPool.apply_async">
+<tt class="descname">apply_async</tt><big>(</big><em>target</em>, <em>args=None</em>, <em>kwargs=None</em>, <em>callbacks=None</em>, <em>errbacks=None</em>, <em>on_ack=&lt;function &lt;lambda&gt; at 0x21a7c70&gt;</em><big>)</big><a class="headerlink" href="#celery.pool.TaskPool.apply_async" title="Permalink to this definition">¶</a></dt>
+<dd><p>Equivalent of the :func:<tt class="docutils literal"><span class="pre">apply</span></tt> built-in function.</p>
+<p>All <tt class="docutils literal"><span class="pre">callbacks</span></tt> and <tt class="docutils literal"><span class="pre">errbacks</span></tt> should complete immediately since
+otherwise the thread which handles the result will get blocked.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.pool.TaskPool.on_ready">
+<tt class="descname">on_ready</tt><big>(</big><em>callbacks</em>, <em>errbacks</em>, <em>on_ack</em>, <em>ret_value</em><big>)</big><a class="headerlink" href="#celery.pool.TaskPool.on_ready" title="Permalink to this definition">¶</a></dt>
+<dd>What to do when a worker task is ready and its return value has
+been collected.</dd></dl>
+
+<dl class="method">
+<dt id="celery.pool.TaskPool.start">
+<tt class="descname">start</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.pool.TaskPool.start" title="Permalink to this definition">¶</a></dt>
+<dd><p>Run the task pool.</p>
+<p>Will pre-fork all workers so they&#8217;re ready to accept tasks.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.pool.TaskPool.stop">
+<tt class="descname">stop</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.pool.TaskPool.stop" title="Permalink to this definition">¶</a></dt>
+<dd>Terminate the pool.</dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.pool.pid_is_dead">
+<tt class="descclassname">celery.pool.</tt><tt class="descname">pid_is_dead</tt><big>(</big><em>pid</em><big>)</big><a class="headerlink" href="#celery.pool.pid_is_dead" title="Permalink to this definition">¶</a></dt>
+<dd><p>Check if a process is not running by PID.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Rtype bool:</th><td class="field-body"></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.pool.process_is_dead">
+<tt class="descclassname">celery.pool.</tt><tt class="descname">process_is_dead</tt><big>(</big><em>process</em><big>)</big><a class="headerlink" href="#celery.pool.process_is_dead" title="Permalink to this definition">¶</a></dt>
+<dd><p>Check if process is not running anymore.</p>
+<p>First it finds out if the process is running by sending
+signal 0. Then if the process is a child process, and is running
+it finds out if it&#8217;s a zombie process and reaps it.
+If the process is running and is not a zombie it tries to send
+a ping through the process pipe.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>process</em> &#8211; A <tt class="xref docutils literal"><span class="pre">multiprocessing.Process</span></tt> instance.</td>
+</tr>
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><tt class="xref docutils literal"><span class="pre">True</span></tt> if the process is not running, <tt class="xref docutils literal"><span class="pre">False</span></tt> otherwise.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.pool.reap_process">
+<tt class="descclassname">celery.pool.</tt><tt class="descname">reap_process</tt><big>(</big><em>pid</em><big>)</big><a class="headerlink" href="#celery.pool.reap_process" title="Permalink to this definition">¶</a></dt>
+<dd><p>Reap process if the process is a zombie.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><tt class="xref docutils literal"><span class="pre">True</span></tt> if process was reaped or is not running,
+<tt class="xref docutils literal"><span class="pre">False</span></tt> otherwise.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.worker.controllers.html"
+                                  title="previous chapter">Worker Controller Threads - celery.worker.controllers</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.supervisor.html"
+                                  title="next chapter">Process Supervisor - celery.supervisor</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.pool.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.supervisor.html" title="Process Supervisor - celery.supervisor"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.controllers.html" title="Worker Controller Threads - celery.worker.controllers"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 205 - 0
reference/celery.registry.html

@@ -0,0 +1,205 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Task Registry - celery.registry &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Signals - celery.signals" href="celery.signals.html" />
+    <link rel="prev" title="Task Information and Utilities - celery.task" href="celery.task.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.signals.html" title="Signals - celery.signals"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.task.html" title="Task Information and Utilities - celery.task"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.registry">
+<h1>Task Registry - celery.registry<a class="headerlink" href="#module-celery.registry" title="Permalink to this headline">¶</a></h1>
+<p>celery.registry</p>
+<dl class="class">
+<dt id="celery.registry.TaskRegistry">
+<em class="property">
+class </em><tt class="descclassname">celery.registry.</tt><tt class="descname">TaskRegistry</tt><a class="headerlink" href="#celery.registry.TaskRegistry" title="Permalink to this definition">¶</a></dt>
+<dd><p>Site registry for tasks.</p>
+<dl class="exception">
+<dt id="celery.registry.TaskRegistry.AlreadyRegistered">
+<em class="property">
+exception </em><tt class="descname">AlreadyRegistered</tt><a class="headerlink" href="#celery.registry.TaskRegistry.AlreadyRegistered" title="Permalink to this definition">¶</a></dt>
+<dd>The task is already registered.</dd></dl>
+
+<dl class="exception">
+<dt id="celery.registry.TaskRegistry.NotRegistered">
+<em class="property">
+exception </em><tt class="descclassname">TaskRegistry.</tt><tt class="descname">NotRegistered</tt><a class="headerlink" href="#celery.registry.TaskRegistry.NotRegistered" title="Permalink to this definition">¶</a></dt>
+<dd>The task is not registered.</dd></dl>
+
+<dl class="method">
+<dt id="celery.registry.TaskRegistry.autodiscover">
+<tt class="descclassname">TaskRegistry.</tt><tt class="descname">autodiscover</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.registry.TaskRegistry.autodiscover" title="Permalink to this definition">¶</a></dt>
+<dd>Autodiscovers tasks using <a title="celery.discovery.autodiscover" class="reference external" href="celery.discovery.html#celery.discovery.autodiscover"><tt class="xref docutils literal"><span class="pre">celery.discovery.autodiscover()</span></tt></a>.</dd></dl>
+
+<dl class="method">
+<dt id="celery.registry.TaskRegistry.filter_types">
+<tt class="descclassname">TaskRegistry.</tt><tt class="descname">filter_types</tt><big>(</big><em>type</em><big>)</big><a class="headerlink" href="#celery.registry.TaskRegistry.filter_types" title="Permalink to this definition">¶</a></dt>
+<dd>Return all tasks of a specific type.</dd></dl>
+
+<dl class="method">
+<dt id="celery.registry.TaskRegistry.get_all">
+<tt class="descclassname">TaskRegistry.</tt><tt class="descname">get_all</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.registry.TaskRegistry.get_all" title="Permalink to this definition">¶</a></dt>
+<dd>Get all task types.</dd></dl>
+
+<dl class="method">
+<dt id="celery.registry.TaskRegistry.get_all_periodic">
+<tt class="descclassname">TaskRegistry.</tt><tt class="descname">get_all_periodic</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.registry.TaskRegistry.get_all_periodic" title="Permalink to this definition">¶</a></dt>
+<dd>Get all periodic task types.</dd></dl>
+
+<dl class="method">
+<dt id="celery.registry.TaskRegistry.get_all_regular">
+<tt class="descclassname">TaskRegistry.</tt><tt class="descname">get_all_regular</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.registry.TaskRegistry.get_all_regular" title="Permalink to this definition">¶</a></dt>
+<dd>Get all regular task types.</dd></dl>
+
+<dl class="method">
+<dt id="celery.registry.TaskRegistry.get_task">
+<tt class="descclassname">TaskRegistry.</tt><tt class="descname">get_task</tt><big>(</big><em>name</em><big>)</big><a class="headerlink" href="#celery.registry.TaskRegistry.get_task" title="Permalink to this definition">¶</a></dt>
+<dd>Get task by name.</dd></dl>
+
+<dl class="method">
+<dt id="celery.registry.TaskRegistry.register">
+<tt class="descclassname">TaskRegistry.</tt><tt class="descname">register</tt><big>(</big><em>task</em>, <em>name=None</em><big>)</big><a class="headerlink" href="#celery.registry.TaskRegistry.register" title="Permalink to this definition">¶</a></dt>
+<dd><p>Register a task in the task registry.</p>
+<p>Task can either be a regular function, or a class inheriting
+from <tt class="xref docutils literal"><span class="pre">celery.task.Task</span></tt>.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>name</em> &#8211; By default the <tt class="xref docutils literal"><span class="pre">Task.name</span></tt> attribute on the
+task is used as the name of the task, but you can override it
+using this option.</td>
+</tr>
+<tr class="field"><th class="field-name" colspan="2">Raises <a title="celery.registry.TaskRegistry.AlreadyRegistered" class="reference internal" href="#celery.registry.TaskRegistry.AlreadyRegistered">AlreadyRegistered</a>:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">if the task is already registered.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.registry.TaskRegistry.unregister">
+<tt class="descclassname">TaskRegistry.</tt><tt class="descname">unregister</tt><big>(</big><em>name</em><big>)</big><a class="headerlink" href="#celery.registry.TaskRegistry.unregister" title="Permalink to this definition">¶</a></dt>
+<dd><p>Unregister task by name.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>name</em> &#8211; name of the task to unregister, or a
+<tt class="xref docutils literal"><span class="pre">celery.task.Task</span></tt> class with a valid <tt class="docutils literal"><span class="pre">name</span></tt> attribute.</td>
+</tr>
+<tr class="field"><th class="field-name" colspan="2">Raises <a title="celery.exceptions.NotRegistered" class="reference external" href="celery.exceptions.html#celery.exceptions.NotRegistered">celery.exceptions.NotRegistered</a>:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">if the task has not
+been registered.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.task.html"
+                                  title="previous chapter">Task Information and Utilities - celery.task</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.signals.html"
+                                  title="next chapter">Signals - celery.signals</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.registry.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.signals.html" title="Signals - celery.signals"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.task.html" title="Task Information and Utilities - celery.task"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 489 - 0
reference/celery.result.html

@@ -0,0 +1,489 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Task Result - celery.result &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Task Information and Utilities - celery.task" href="celery.task.html" />
+    <link rel="prev" title="Executing Tasks - celery.execute" href="celery.execute.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.task.html" title="Task Information and Utilities - celery.task"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.execute.html" title="Executing Tasks - celery.execute"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.result">
+<h1>Task Result - celery.result<a class="headerlink" href="#module-celery.result" title="Permalink to this headline">¶</a></h1>
+<p>Asynchronous result types.</p>
+<dl class="class">
+<dt id="celery.result.AsyncResult">
+<em class="property">
+class </em><tt class="descclassname">celery.result.</tt><tt class="descname">AsyncResult</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.result.AsyncResult" title="Permalink to this definition">¶</a></dt>
+<dd><p>Pending task result using the default backend.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>task_id</em> &#8211; see <a title="celery.result.AsyncResult.task_id" class="reference internal" href="#celery.result.AsyncResult.task_id"><tt class="xref docutils literal"><span class="pre">task_id</span></tt></a>.</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.result.AsyncResult.task_id">
+<tt class="descname">task_id</tt><a class="headerlink" href="#celery.result.AsyncResult.task_id" title="Permalink to this definition">¶</a></dt>
+<dd>The unique identifier for this task.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.result.AsyncResult.backend">
+<tt class="descname">backend</tt><a class="headerlink" href="#celery.result.AsyncResult.backend" title="Permalink to this definition">¶</a></dt>
+<dd>Instance of <a title="celery.backends.DefaultBackend" class="reference external" href="celery.backends.html#celery.backends.DefaultBackend"><tt class="xref docutils literal"><span class="pre">celery.backends.DefaultBackend</span></tt></a>.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.result.BaseAsyncResult">
+<em class="property">
+class </em><tt class="descclassname">celery.result.</tt><tt class="descname">BaseAsyncResult</tt><big>(</big><em>task_id</em>, <em>backend</em><big>)</big><a class="headerlink" href="#celery.result.BaseAsyncResult" title="Permalink to this definition">¶</a></dt>
+<dd><p>Base class for pending result, supports custom
+task meta <a title="celery.result.BaseAsyncResult.backend" class="reference internal" href="#celery.result.BaseAsyncResult.backend"><tt class="xref docutils literal"><span class="pre">backend</span></tt></a></p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>task_id</em> &#8211; see <a title="celery.result.BaseAsyncResult.task_id" class="reference internal" href="#celery.result.BaseAsyncResult.task_id"><tt class="xref docutils literal"><span class="pre">task_id</span></tt></a>.</li>
+<li><em>backend</em> &#8211; see <a title="celery.result.BaseAsyncResult.backend" class="reference internal" href="#celery.result.BaseAsyncResult.backend"><tt class="xref docutils literal"><span class="pre">backend</span></tt></a>.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.result.BaseAsyncResult.task_id">
+<tt class="descname">task_id</tt><a class="headerlink" href="#celery.result.BaseAsyncResult.task_id" title="Permalink to this definition">¶</a></dt>
+<dd>The unique identifier for this task.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.result.BaseAsyncResult.backend">
+<tt class="descname">backend</tt><a class="headerlink" href="#celery.result.BaseAsyncResult.backend" title="Permalink to this definition">¶</a></dt>
+<dd>The task result backend used.</dd></dl>
+
+<dl class="exception">
+<dt id="celery.result.BaseAsyncResult.TimeoutError">
+<em class="property">
+exception </em><tt class="descname">TimeoutError</tt><a class="headerlink" href="#celery.result.BaseAsyncResult.TimeoutError" title="Permalink to this definition">¶</a></dt>
+<dd>The operation timed out.</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.BaseAsyncResult.get">
+<tt class="descclassname">BaseAsyncResult.</tt><tt class="descname">get</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.BaseAsyncResult.get" title="Permalink to this definition">¶</a></dt>
+<dd>Alias to <a title="celery.result.BaseAsyncResult.wait" class="reference internal" href="#celery.result.BaseAsyncResult.wait"><tt class="xref docutils literal"><span class="pre">wait()</span></tt></a>.</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.BaseAsyncResult.is_done">
+<tt class="descclassname">BaseAsyncResult.</tt><tt class="descname">is_done</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.BaseAsyncResult.is_done" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns <tt class="xref docutils literal"><span class="pre">True</span></tt> if the task executed successfully.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Return type:</th><td class="field-body">bool</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.BaseAsyncResult.ready">
+<tt class="descclassname">BaseAsyncResult.</tt><tt class="descname">ready</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.BaseAsyncResult.ready" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns <tt class="xref docutils literal"><span class="pre">True</span></tt> if the task executed successfully, or raised
+an exception. If the task is still pending, or is waiting for retry
+then <tt class="xref docutils literal"><span class="pre">False</span></tt> is returned.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Return type:</th><td class="field-body">bool</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.result.BaseAsyncResult.result">
+<tt class="descclassname">BaseAsyncResult.</tt><tt class="descname">result</tt><a class="headerlink" href="#celery.result.BaseAsyncResult.result" title="Permalink to this definition">¶</a></dt>
+<dd><p>When the task has been executed, this contains the return value.</p>
+<p>If the task raised an exception, this will be the exception instance.</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.result.BaseAsyncResult.status">
+<tt class="descclassname">BaseAsyncResult.</tt><tt class="descname">status</tt><a class="headerlink" href="#celery.result.BaseAsyncResult.status" title="Permalink to this definition">¶</a></dt>
+<dd><p>The current status of the task.</p>
+<p>Can be one of the following:</p>
+<blockquote>
+<p><em>PENDING</em></p>
+<blockquote>
+The task is waiting for execution.</blockquote>
+<p><em>RETRY</em></p>
+<blockquote>
+The task is to be retried, possibly because of failure.</blockquote>
+<p><em>FAILURE</em></p>
+<blockquote>
+The task raised an exception, or has been retried more times
+than its limit. The <a title="celery.result.BaseAsyncResult.result" class="reference internal" href="#celery.result.BaseAsyncResult.result"><tt class="xref docutils literal"><span class="pre">result</span></tt></a> attribute contains the
+exception raised.</blockquote>
+<p><em>DONE</em></p>
+<blockquote>
+The task executed successfully. The <a title="celery.result.BaseAsyncResult.result" class="reference internal" href="#celery.result.BaseAsyncResult.result"><tt class="xref docutils literal"><span class="pre">result</span></tt></a> attribute
+contains the resulting value.</blockquote>
+</blockquote>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.BaseAsyncResult.successful">
+<tt class="descclassname">BaseAsyncResult.</tt><tt class="descname">successful</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.BaseAsyncResult.successful" title="Permalink to this definition">¶</a></dt>
+<dd>Alias to <a title="celery.result.BaseAsyncResult.is_done" class="reference internal" href="#celery.result.BaseAsyncResult.is_done"><tt class="xref docutils literal"><span class="pre">is_done()</span></tt></a>.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.result.BaseAsyncResult.traceback">
+<tt class="descclassname">BaseAsyncResult.</tt><tt class="descname">traceback</tt><a class="headerlink" href="#celery.result.BaseAsyncResult.traceback" title="Permalink to this definition">¶</a></dt>
+<dd>Get the traceback of a failed task.</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.BaseAsyncResult.wait">
+<tt class="descclassname">BaseAsyncResult.</tt><tt class="descname">wait</tt><big>(</big><em>timeout=None</em><big>)</big><a class="headerlink" href="#celery.result.BaseAsyncResult.wait" title="Permalink to this definition">¶</a></dt>
+<dd><p>Wait for task, and return the result when it arrives.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>timeout</em> &#8211; How long to wait in seconds, before the
+operation times out.</td>
+</tr>
+<tr class="field"><th class="field-name" colspan="2">Raises <a title="celery.exceptions.TimeoutError" class="reference external" href="celery.exceptions.html#celery.exceptions.TimeoutError">celery.exceptions.TimeoutError</a>:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">if <tt class="docutils literal"><span class="pre">timeout</span></tt> is not <tt class="xref docutils literal"><span class="pre">None</span></tt>
+and the result does not arrive within <tt class="docutils literal"><span class="pre">timeout</span></tt> seconds.</td>
+</tr>
+</tbody>
+</table>
+<p>If the remote call raised an exception then that
+exception will be re-raised.</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.result.EagerResult">
+<em class="property">
+class </em><tt class="descclassname">celery.result.</tt><tt class="descname">EagerResult</tt><big>(</big><em>task_id</em>, <em>ret_value</em>, <em>status</em>, <em>traceback=None</em><big>)</big><a class="headerlink" href="#celery.result.EagerResult" title="Permalink to this definition">¶</a></dt>
+<dd><p>Result that we know has already been executed.</p>
+<dl class="exception">
+<dt id="celery.result.EagerResult.TimeoutError">
+<em class="property">
+exception </em><tt class="descname">TimeoutError</tt><a class="headerlink" href="#celery.result.EagerResult.TimeoutError" title="Permalink to this definition">¶</a></dt>
+<dd>The operation timed out.</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.EagerResult.is_done">
+<tt class="descclassname">EagerResult.</tt><tt class="descname">is_done</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.EagerResult.is_done" title="Permalink to this definition">¶</a></dt>
+<dd>Returns <tt class="xref docutils literal"><span class="pre">True</span></tt> if the task executed without failure.</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.EagerResult.is_ready">
+<tt class="descclassname">EagerResult.</tt><tt class="descname">is_ready</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.EagerResult.is_ready" title="Permalink to this definition">¶</a></dt>
+<dd>Returns <tt class="xref docutils literal"><span class="pre">True</span></tt> if the task has been executed.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.result.EagerResult.result">
+<tt class="descclassname">EagerResult.</tt><tt class="descname">result</tt><a class="headerlink" href="#celery.result.EagerResult.result" title="Permalink to this definition">¶</a></dt>
+<dd>The tasks return value</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.result.EagerResult.status">
+<tt class="descclassname">EagerResult.</tt><tt class="descname">status</tt><a class="headerlink" href="#celery.result.EagerResult.status" title="Permalink to this definition">¶</a></dt>
+<dd>The tasks status</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.result.EagerResult.traceback">
+<tt class="descclassname">EagerResult.</tt><tt class="descname">traceback</tt><a class="headerlink" href="#celery.result.EagerResult.traceback" title="Permalink to this definition">¶</a></dt>
+<dd>The traceback if the task failed.</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.EagerResult.wait">
+<tt class="descclassname">EagerResult.</tt><tt class="descname">wait</tt><big>(</big><em>timeout=None</em><big>)</big><a class="headerlink" href="#celery.result.EagerResult.wait" title="Permalink to this definition">¶</a></dt>
+<dd>Wait until the task has been executed and return its result.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.result.TaskSetResult">
+<em class="property">
+class </em><tt class="descclassname">celery.result.</tt><tt class="descname">TaskSetResult</tt><big>(</big><em>taskset_id</em>, <em>subtasks</em><big>)</big><a class="headerlink" href="#celery.result.TaskSetResult" title="Permalink to this definition">¶</a></dt>
+<dd><p>Working with <tt class="xref docutils literal"><span class="pre">celery.task.TaskSet</span></tt> results.</p>
+<p>An instance of this class is returned by
+<tt class="xref docutils literal"><span class="pre">celery.task.TaskSet.run()</span></tt>. It lets you inspect the status and
+return values of the taskset as a single entity.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name" colspan="2">Option taskset_id:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">see <a title="celery.result.TaskSetResult.taskset_id" class="reference internal" href="#celery.result.TaskSetResult.taskset_id"><tt class="xref docutils literal"><span class="pre">taskset_id</span></tt></a>.</td>
+</tr>
+<tr class="field"><th class="field-name" colspan="2">Option subtasks:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">see <a title="celery.result.TaskSetResult.subtasks" class="reference internal" href="#celery.result.TaskSetResult.subtasks"><tt class="xref docutils literal"><span class="pre">subtasks</span></tt></a>.</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.result.TaskSetResult.taskset_id">
+<tt class="descname">taskset_id</tt><a class="headerlink" href="#celery.result.TaskSetResult.taskset_id" title="Permalink to this definition">¶</a></dt>
+<dd>The UUID of the taskset itself.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.result.TaskSetResult.subtasks">
+<tt class="descname">subtasks</tt><a class="headerlink" href="#celery.result.TaskSetResult.subtasks" title="Permalink to this definition">¶</a></dt>
+<dd>A list of <a title="celery.result.AsyncResult" class="reference internal" href="#celery.result.AsyncResult"><tt class="xref docutils literal"><span class="pre">AsyncResult</span></tt></a> instances for all of the subtasks.</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.TaskSetResult.completed_count">
+<tt class="descname">completed_count</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.TaskSetResult.completed_count" title="Permalink to this definition">¶</a></dt>
+<dd><p>Task completion count.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the number of tasks completed.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.TaskSetResult.failed">
+<tt class="descname">failed</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.TaskSetResult.failed" title="Permalink to this definition">¶</a></dt>
+<dd><p>Did the taskset fail?</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><tt class="xref docutils literal"><span class="pre">True</span></tt> if any of the tasks in the taskset failed.
+(i.e., raised an exception)</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.TaskSetResult.iterate">
+<tt class="descname">iterate</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.TaskSetResult.iterate" title="Permalink to this definition">¶</a></dt>
+<dd><p>Iterate over the return values of the tasks as they finish
+one by one.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Raises:</th><td class="field-body">The exception if any of the tasks raised an exception.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.TaskSetResult.itersubtasks">
+<tt class="descname">itersubtasks</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.TaskSetResult.itersubtasks" title="Permalink to this definition">¶</a></dt>
+<dd><p>Taskset subtask iterator.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">an iterator for iterating over the tasksets
+<a title="celery.result.AsyncResult" class="reference internal" href="#celery.result.AsyncResult"><tt class="xref docutils literal"><span class="pre">AsyncResult</span></tt></a> objects.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.TaskSetResult.join">
+<tt class="descname">join</tt><big>(</big><em>timeout=None</em><big>)</big><a class="headerlink" href="#celery.result.TaskSetResult.join" title="Permalink to this definition">¶</a></dt>
+<dd><p>Gather the results for all of the tasks in the taskset,
+and return a list with them ordered by the order of which they
+were called.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>timeout</em> &#8211; The time in seconds, how long
+it will wait for results, before the operation times out.</td>
+</tr>
+<tr class="field"><th class="field-name" colspan="2">Raises <a title="celery.exceptions.TimeoutError" class="reference external" href="celery.exceptions.html#celery.exceptions.TimeoutError">celery.exceptions.TimeoutError</a>:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">if <tt class="docutils literal"><span class="pre">timeout</span></tt> is not <tt class="xref docutils literal"><span class="pre">None</span></tt>
+and the operation takes longer than <tt class="docutils literal"><span class="pre">timeout</span></tt> seconds.</td>
+</tr>
+</tbody>
+</table>
+<p>If any of the tasks raises an exception, the exception
+will be reraised by <a title="celery.result.TaskSetResult.join" class="reference internal" href="#celery.result.TaskSetResult.join"><tt class="xref docutils literal"><span class="pre">join()</span></tt></a>.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">list of return values for all tasks in the taskset.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.TaskSetResult.ready">
+<tt class="descname">ready</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.TaskSetResult.ready" title="Permalink to this definition">¶</a></dt>
+<dd><p>Is the task ready?</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><tt class="xref docutils literal"><span class="pre">True</span></tt> if all of the tasks in the taskset has been
+executed.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.TaskSetResult.successful">
+<tt class="descname">successful</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.TaskSetResult.successful" title="Permalink to this definition">¶</a></dt>
+<dd><p>Was the taskset successful?</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><tt class="xref docutils literal"><span class="pre">True</span></tt> if all of the tasks in the taskset finished
+successfully (i.e. did not raise an exception).</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.result.TaskSetResult.total">
+<tt class="descname">total</tt><a class="headerlink" href="#celery.result.TaskSetResult.total" title="Permalink to this definition">¶</a></dt>
+<dd>The total number of tasks in the <tt class="xref docutils literal"><span class="pre">celery.task.TaskSet</span></tt>.</dd></dl>
+
+<dl class="method">
+<dt id="celery.result.TaskSetResult.waiting">
+<tt class="descname">waiting</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.result.TaskSetResult.waiting" title="Permalink to this definition">¶</a></dt>
+<dd><p>Is the taskset waiting?</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><tt class="xref docutils literal"><span class="pre">True</span></tt> if any of the tasks in the taskset is still
+waiting for execution.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.execute.html"
+                                  title="previous chapter">Executing Tasks - celery.execute</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.task.html"
+                                  title="next chapter">Task Information and Utilities - celery.task</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.result.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.task.html" title="Task Information and Utilities - celery.task"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.execute.html" title="Executing Tasks - celery.execute"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 115 - 0
reference/celery.signals.html

@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Signals - celery.signals &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Exceptions - celery.exceptions" href="celery.exceptions.html" />
+    <link rel="prev" title="Task Registry - celery.registry" href="celery.registry.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.exceptions.html" title="Exceptions - celery.exceptions"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.registry.html" title="Task Registry - celery.registry"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.signals">
+<h1>Signals - celery.signals<a class="headerlink" href="#module-celery.signals" title="Permalink to this headline">¶</a></h1>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.registry.html"
+                                  title="previous chapter">Task Registry - celery.registry</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.exceptions.html"
+                                  title="next chapter">Exceptions - celery.exceptions</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.signals.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.exceptions.html" title="Exceptions - celery.exceptions"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.registry.html" title="Task Registry - celery.registry"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 241 - 0
reference/celery.supervisor.html

@@ -0,0 +1,241 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Process Supervisor - celery.supervisor &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Backends - celery.backends" href="celery.backends.html" />
+    <link rel="prev" title="Task Pool - celery.pool" href="celery.pool.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.html" title="Backends - celery.backends"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.pool.html" title="Task Pool - celery.pool"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.supervisor">
+<h1>Process Supervisor - celery.supervisor<a class="headerlink" href="#module-celery.supervisor" title="Permalink to this headline">¶</a></h1>
+<dl class="exception">
+<dt id="celery.supervisor.MaxRestartsExceededError">
+<em class="property">
+exception </em><tt class="descclassname">celery.supervisor.</tt><tt class="descname">MaxRestartsExceededError</tt><a class="headerlink" href="#celery.supervisor.MaxRestartsExceededError" title="Permalink to this definition">¶</a></dt>
+<dd>Restarts exceeded the maximum restart frequency.</dd></dl>
+
+<dl class="class">
+<dt id="celery.supervisor.OFASupervisor">
+<em class="property">
+class </em><tt class="descclassname">celery.supervisor.</tt><tt class="descname">OFASupervisor</tt><big>(</big><em>target</em>, <em>args=None</em>, <em>kwargs=None</em>, <em>max_restart_freq=3</em>, <em>join_timeout=2</em>, <em>max_restart_freq_time=10</em>, <em>check_interval=2</em><big>)</big><a class="headerlink" href="#celery.supervisor.OFASupervisor" title="Permalink to this definition">¶</a></dt>
+<dd><p>Process supervisor using the <a class="reference external" href="http://erlang.org/doc/design_principles/sup_princ.html#5.3.2">one_for_all</a> strategy.</p>
+<p>However, instead of registering a list of processes, you have one
+process which runs a pool. Makes for an easy implementation.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>target</em> &#8211; see <a title="celery.supervisor.OFASupervisor.target" class="reference internal" href="#celery.supervisor.OFASupervisor.target"><tt class="xref docutils literal"><span class="pre">target</span></tt></a>.</li>
+<li><em>args</em> &#8211; see <a title="celery.supervisor.OFASupervisor.args" class="reference internal" href="#celery.supervisor.OFASupervisor.args"><tt class="xref docutils literal"><span class="pre">args</span></tt></a>.</li>
+<li><em>kwargs</em> &#8211; see <a title="celery.supervisor.OFASupervisor.kwargs" class="reference internal" href="#celery.supervisor.OFASupervisor.kwargs"><tt class="xref docutils literal"><span class="pre">kwargs</span></tt></a>.</li>
+<li><em>max_restart_freq</em> &#8211; see <a title="celery.supervisor.OFASupervisor.max_restart_freq" class="reference internal" href="#celery.supervisor.OFASupervisor.max_restart_freq"><tt class="xref docutils literal"><span class="pre">max_restart_freq</span></tt></a>.</li>
+<li><em>max_restart_freq_time</em> &#8211; see <a title="celery.supervisor.OFASupervisor.max_restart_freq_time" class="reference internal" href="#celery.supervisor.OFASupervisor.max_restart_freq_time"><tt class="xref docutils literal"><span class="pre">max_restart_freq_time</span></tt></a>.</li>
+<li><em>check_interval</em> &#8211; see <a title="celery.supervisor.OFASupervisor.max_restart_freq_time" class="reference internal" href="#celery.supervisor.OFASupervisor.max_restart_freq_time"><tt class="xref docutils literal"><span class="pre">max_restart_freq_time</span></tt></a>.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.supervisor.OFASupervisor.target">
+<tt class="descname">target</tt><a class="headerlink" href="#celery.supervisor.OFASupervisor.target" title="Permalink to this definition">¶</a></dt>
+<dd>The target callable to be launched in a new process.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.supervisor.OFASupervisor.args">
+<tt class="descname">args</tt><a class="headerlink" href="#celery.supervisor.OFASupervisor.args" title="Permalink to this definition">¶</a></dt>
+<dd>The positional arguments to apply to <a title="celery.supervisor.OFASupervisor.target" class="reference internal" href="#celery.supervisor.OFASupervisor.target"><tt class="xref docutils literal"><span class="pre">target</span></tt></a>.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.supervisor.OFASupervisor.kwargs">
+<tt class="descname">kwargs</tt><a class="headerlink" href="#celery.supervisor.OFASupervisor.kwargs" title="Permalink to this definition">¶</a></dt>
+<dd>The keyword arguments to apply to <a title="celery.supervisor.OFASupervisor.target" class="reference internal" href="#celery.supervisor.OFASupervisor.target"><tt class="xref docutils literal"><span class="pre">target</span></tt></a>.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.supervisor.OFASupervisor.max_restart_freq">
+<tt class="descname">max_restart_freq</tt><a class="headerlink" href="#celery.supervisor.OFASupervisor.max_restart_freq" title="Permalink to this definition">¶</a></dt>
+<dd><p>Limit the number of restarts which can occur in a given time interval.</p>
+<p>The max restart frequency is the number of restarts that can occur
+within the interval <a title="celery.supervisor.OFASupervisor.max_restart_freq_time" class="reference internal" href="#celery.supervisor.OFASupervisor.max_restart_freq_time"><tt class="xref docutils literal"><span class="pre">max_restart_freq_time</span></tt></a>.</p>
+<p>The restart mechanism prevents situations where the process repeatedly
+dies for the same reason. If this happens both the process and the
+supervisor is terminated.</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.supervisor.OFASupervisor.max_restart_freq_time">
+<tt class="descname">max_restart_freq_time</tt><a class="headerlink" href="#celery.supervisor.OFASupervisor.max_restart_freq_time" title="Permalink to this definition">¶</a></dt>
+<dd>See <a title="celery.supervisor.OFASupervisor.max_restart_freq" class="reference internal" href="#celery.supervisor.OFASupervisor.max_restart_freq"><tt class="xref docutils literal"><span class="pre">max_restart_freq</span></tt></a>.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.supervisor.OFASupervisor.check_interval">
+<tt class="descname">check_interval</tt><a class="headerlink" href="#celery.supervisor.OFASupervisor.check_interval" title="Permalink to this definition">¶</a></dt>
+<dd>The time in seconds, between process pings.</dd></dl>
+
+<dl class="class">
+<dt id="celery.supervisor.OFASupervisor.Process">
+<em class="property">
+class </em><tt class="descname">Process</tt><big>(</big><em>group=None</em>, <em>target=None</em>, <em>name=None</em>, <em>args=()</em>, <em>kwargs={}</em><big>)</big><a class="headerlink" href="#celery.supervisor.OFASupervisor.Process" title="Permalink to this definition">¶</a></dt>
+<dd><p>Process objects represent activity that is run in a separate process</p>
+<p>The class is analagous to <cite>threading.Thread</cite></p>
+<dl class="attribute">
+<dt id="celery.supervisor.OFASupervisor.Process.daemon">
+<tt class="descname">daemon</tt><a class="headerlink" href="#celery.supervisor.OFASupervisor.Process.daemon" title="Permalink to this definition">¶</a></dt>
+<dd>Return whether process is a daemon</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.supervisor.OFASupervisor.Process.exitcode">
+<tt class="descname">exitcode</tt><a class="headerlink" href="#celery.supervisor.OFASupervisor.Process.exitcode" title="Permalink to this definition">¶</a></dt>
+<dd>Return exit code of process or <cite>None</cite> if it has yet to stop</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.supervisor.OFASupervisor.Process.ident">
+<tt class="descname">ident</tt><a class="headerlink" href="#celery.supervisor.OFASupervisor.Process.ident" title="Permalink to this definition">¶</a></dt>
+<dd>Return indentifier (PID) of process or <cite>None</cite> if it has yet to start</dd></dl>
+
+<dl class="method">
+<dt id="celery.supervisor.OFASupervisor.Process.is_alive">
+<tt class="descname">is_alive</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.supervisor.OFASupervisor.Process.is_alive" title="Permalink to this definition">¶</a></dt>
+<dd>Return whether process is alive</dd></dl>
+
+<dl class="method">
+<dt id="celery.supervisor.OFASupervisor.Process.join">
+<tt class="descname">join</tt><big>(</big><em>timeout=None</em><big>)</big><a class="headerlink" href="#celery.supervisor.OFASupervisor.Process.join" title="Permalink to this definition">¶</a></dt>
+<dd>Wait until child process terminates</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.supervisor.OFASupervisor.Process.pid">
+<tt class="descname">pid</tt><a class="headerlink" href="#celery.supervisor.OFASupervisor.Process.pid" title="Permalink to this definition">¶</a></dt>
+<dd>Return indentifier (PID) of process or <cite>None</cite> if it has yet to start</dd></dl>
+
+<dl class="method">
+<dt id="celery.supervisor.OFASupervisor.Process.run">
+<tt class="descname">run</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.supervisor.OFASupervisor.Process.run" title="Permalink to this definition">¶</a></dt>
+<dd>Method to be run in sub-process; can be overridden in sub-class</dd></dl>
+
+<dl class="method">
+<dt id="celery.supervisor.OFASupervisor.Process.start">
+<tt class="descname">start</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.supervisor.OFASupervisor.Process.start" title="Permalink to this definition">¶</a></dt>
+<dd>Start child process</dd></dl>
+
+<dl class="method">
+<dt id="celery.supervisor.OFASupervisor.Process.terminate">
+<tt class="descname">terminate</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.supervisor.OFASupervisor.Process.terminate" title="Permalink to this definition">¶</a></dt>
+<dd>Terminate process; sends SIGTERM signal or uses TerminateProcess()</dd></dl>
+
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.supervisor.OFASupervisor.start">
+<tt class="descclassname">OFASupervisor.</tt><tt class="descname">start</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.supervisor.OFASupervisor.start" title="Permalink to this definition">¶</a></dt>
+<dd>Launches the <a title="celery.supervisor.OFASupervisor.target" class="reference internal" href="#celery.supervisor.OFASupervisor.target"><tt class="xref docutils literal"><span class="pre">target</span></tt></a> in a seperate process and starts
+supervising it.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.pool.html"
+                                  title="previous chapter">Task Pool - celery.pool</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.backends.html"
+                                  title="next chapter">Backends - celery.backends</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.supervisor.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.backends.html" title="Backends - celery.backends"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.pool.html" title="Task Pool - celery.pool"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 707 - 0
reference/celery.task.base.html

@@ -0,0 +1,707 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Defining Tasks - celery.task.base &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Executing Tasks - celery.execute" href="celery.execute.html" />
+    <link rel="prev" title="Module API Reference" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.execute.html" title="Executing Tasks - celery.execute"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Module API Reference"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.task.base">
+<h1>Defining Tasks - celery.task.base<a class="headerlink" href="#module-celery.task.base" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="celery.task.base.AsynchronousMapTask">
+<em class="property">
+class </em><tt class="descclassname">celery.task.base.</tt><tt class="descname">AsynchronousMapTask</tt><a class="headerlink" href="#celery.task.base.AsynchronousMapTask" title="Permalink to this definition">¶</a></dt>
+<dd><p>Task used internally by <tt class="xref docutils literal"><span class="pre">dmap_async()</span></tt> and
+<a title="celery.task.base.TaskSet.map_async" class="reference internal" href="#celery.task.base.TaskSet.map_async"><tt class="xref docutils literal"><span class="pre">TaskSet.map_async()</span></tt></a>.</p>
+<dl class="method">
+<dt id="celery.task.base.AsynchronousMapTask.run">
+<tt class="descname">run</tt><big>(</big><em>serfunc</em>, <em>args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.task.base.AsynchronousMapTask.run" title="Permalink to this definition">¶</a></dt>
+<dd>The method run by <tt class="docutils literal"><span class="pre">celeryd</span></tt>.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.task.base.ExecuteRemoteTask">
+<em class="property">
+class </em><tt class="descclassname">celery.task.base.</tt><tt class="descname">ExecuteRemoteTask</tt><a class="headerlink" href="#celery.task.base.ExecuteRemoteTask" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute an arbitrary function or object.</p>
+<p><em>Note</em> You probably want <tt class="xref docutils literal"><span class="pre">execute_remote()</span></tt> instead, which this
+is an internal component of.</p>
+<p>The object must be pickleable, so you can&#8217;t use lambdas or functions
+defined in the REPL (that is the python shell, or <tt class="docutils literal"><span class="pre">ipython</span></tt>).</p>
+<dl class="method">
+<dt id="celery.task.base.ExecuteRemoteTask.run">
+<tt class="descname">run</tt><big>(</big><em>ser_callable</em>, <em>fargs</em>, <em>fkwargs</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.task.base.ExecuteRemoteTask.run" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>ser_callable</em> &#8211; A pickled function or callable object.</li>
+<li><em>fargs</em> &#8211; Positional arguments to apply to the function.</li>
+<li><em>fkwargs</em> &#8211; Keyword arguments to apply to the function.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.task.base.PeriodicTask">
+<em class="property">
+class </em><tt class="descclassname">celery.task.base.</tt><tt class="descname">PeriodicTask</tt><a class="headerlink" href="#celery.task.base.PeriodicTask" title="Permalink to this definition">¶</a></dt>
+<dd><p>A periodic task is a task that behaves like a <em>cron</em> job.</p>
+<dl class="attribute">
+<dt id="celery.task.base.PeriodicTask.run_every">
+<tt class="descname">run_every</tt><a class="headerlink" href="#celery.task.base.PeriodicTask.run_every" title="Permalink to this definition">¶</a></dt>
+<dd><em>REQUIRED</em> Defines how often the task is run (its interval),
+it can be either a <tt class="xref docutils literal"><span class="pre">datetime.timedelta</span></tt> object or an
+integer specifying the time in seconds.</dd></dl>
+
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name" colspan="2">Raises NotImplementedError:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">if the <a title="celery.task.base.PeriodicTask.run_every" class="reference internal" href="#celery.task.base.PeriodicTask.run_every"><tt class="xref docutils literal"><span class="pre">run_every</span></tt></a> attribute is
+not defined.</td>
+</tr>
+</tbody>
+</table>
+<p>You have to register the periodic task in the task registry.</p>
+<p>Example</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">tasks</span><span class="p">,</span> <span class="n">PeriodicTask</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">timedelta</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyPeriodicTask</span><span class="p">(</span><span class="n">PeriodicTask</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;my_periodic_task&quot;</span>
+<span class="gp">... </span>    <span class="n">run_every</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="mf">30</span><span class="p">)</span>
+<span class="gp">...</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">logger</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_logger</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Running MyPeriodicTask&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tasks</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">MyPeriodicTask</span><span class="p">)</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.task.base.Task">
+<em class="property">
+class </em><tt class="descclassname">celery.task.base.</tt><tt class="descname">Task</tt><a class="headerlink" href="#celery.task.base.Task" title="Permalink to this definition">¶</a></dt>
+<dd><p>A task that can be delayed for execution by the <tt class="docutils literal"><span class="pre">celery</span></tt> daemon.</p>
+<p>All subclasses of <a title="celery.task.base.Task" class="reference internal" href="#celery.task.base.Task"><tt class="xref docutils literal"><span class="pre">Task</span></tt></a> must define the <a title="celery.task.base.Task.run" class="reference internal" href="#celery.task.base.Task.run"><tt class="xref docutils literal"><span class="pre">run()</span></tt></a> method,
+which is the actual method the <tt class="docutils literal"><span class="pre">celery</span></tt> daemon executes.</p>
+<p>The <a title="celery.task.base.Task.run" class="reference internal" href="#celery.task.base.Task.run"><tt class="xref docutils literal"><span class="pre">run()</span></tt></a> method supports both positional, and keyword arguments.</p>
+<dl class="attribute">
+<dt id="celery.task.base.Task.name">
+<tt class="descname">name</tt><a class="headerlink" href="#celery.task.base.Task.name" title="Permalink to this definition">¶</a></dt>
+<dd><em>REQUIRED</em> All subclasses of <a title="celery.task.base.Task" class="reference internal" href="#celery.task.base.Task"><tt class="xref docutils literal"><span class="pre">Task</span></tt></a> has to define the
+<a title="celery.task.base.Task.name" class="reference internal" href="#celery.task.base.Task.name"><tt class="xref docutils literal"><span class="pre">name</span></tt></a> attribute. This is the name of the task, registered
+in the task registry, and passed to <tt class="xref docutils literal"><span class="pre">delay_task()</span></tt>.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.task.base.Task.type">
+<tt class="descname">type</tt><a class="headerlink" href="#celery.task.base.Task.type" title="Permalink to this definition">¶</a></dt>
+<dd>The type of task, currently this can be <tt class="docutils literal"><span class="pre">regular</span></tt>, or <tt class="docutils literal"><span class="pre">periodic</span></tt>,
+however if you want a periodic task, you should subclass
+<a title="celery.task.base.PeriodicTask" class="reference internal" href="#celery.task.base.PeriodicTask"><tt class="xref docutils literal"><span class="pre">PeriodicTask</span></tt></a> instead.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.task.base.Task.routing_key">
+<tt class="descname">routing_key</tt><a class="headerlink" href="#celery.task.base.Task.routing_key" title="Permalink to this definition">¶</a></dt>
+<dd>Override the global default <tt class="docutils literal"><span class="pre">routing_key</span></tt> for this task.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.task.base.Task.exchange">
+<tt class="descname">exchange</tt><a class="headerlink" href="#celery.task.base.Task.exchange" title="Permalink to this definition">¶</a></dt>
+<dd>Override the global default <tt class="docutils literal"><span class="pre">exchange</span></tt> for this task.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.task.base.Task.mandatory">
+<tt class="descname">mandatory</tt><a class="headerlink" href="#celery.task.base.Task.mandatory" title="Permalink to this definition">¶</a></dt>
+<dd>If set, the message has mandatory routing. By default the message
+is silently dropped by the broker if it can&#8217;t be routed to a queue.
+However - If the message is mandatory, an exception will be raised
+instead.</dd></dl>
+
+<dl class="attribute">
+<dt>
+<tt class="descname">immediate:</tt></dt>
+<dd>Request immediate delivery. If the message cannot be routed to a
+task worker immediately, an exception will be raised. This is
+instead of the default behaviour, where the broker will accept and
+queue the message, but with no guarantee that the message will ever
+be consumed.</dd></dl>
+
+<dl class="attribute">
+<dt>
+<tt class="descname">priority:</tt></dt>
+<dd>The message priority. A number from <tt class="docutils literal"><span class="pre">0</span></tt> to <tt class="docutils literal"><span class="pre">9</span></tt>.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.task.base.Task.max_retries">
+<tt class="descname">max_retries</tt><a class="headerlink" href="#celery.task.base.Task.max_retries" title="Permalink to this definition">¶</a></dt>
+<dd>Maximum number of retries before giving up.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.task.base.Task.default_retry_delay">
+<tt class="descname">default_retry_delay</tt><a class="headerlink" href="#celery.task.base.Task.default_retry_delay" title="Permalink to this definition">¶</a></dt>
+<dd>Defeault time in seconds before a retry of the task should be
+executed. Default is a 1 minute delay.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.task.base.Task.ignore_result">
+<tt class="descname">ignore_result</tt><a class="headerlink" href="#celery.task.base.Task.ignore_result" title="Permalink to this definition">¶</a></dt>
+<dd>Don&#8217;t store the status and return value. This means you can&#8217;t
+use the <a title="celery.result.AsyncResult" class="reference external" href="celery.result.html#celery.result.AsyncResult"><tt class="xref docutils literal"><span class="pre">celery.result.AsyncResult</span></tt></a> to check if the task is
+done, or get its return value. Only use if you need the performance
+and is able live without these features. Any exceptions raised will
+store the return value/status as usual.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.task.base.Task.disable_error_emails">
+<tt class="descname">disable_error_emails</tt><a class="headerlink" href="#celery.task.base.Task.disable_error_emails" title="Permalink to this definition">¶</a></dt>
+<dd>Disable all error e-mails for this task (only applicable if
+<tt class="docutils literal"><span class="pre">settings.SEND_CELERY_ERROR_EMAILS</span></tt> is on.)</dd></dl>
+
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name" colspan="2">Raises NotImplementedError:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">if the <a title="celery.task.base.Task.name" class="reference internal" href="#celery.task.base.Task.name"><tt class="xref docutils literal"><span class="pre">name</span></tt></a> attribute is not set.</td>
+</tr>
+</tbody>
+</table>
+<p>The resulting class is callable, which if called will apply the
+<a title="celery.task.base.Task.run" class="reference internal" href="#celery.task.base.Task.run"><tt class="xref docutils literal"><span class="pre">run()</span></tt></a> method.</p>
+<p>Examples</p>
+<p>This is a simple task just logging a message,</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">tasks</span><span class="p">,</span> <span class="n">Task</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyTask</span><span class="p">(</span><span class="n">Task</span><span class="p">):</span>
+<span class="gp">...</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">some_arg</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">logger</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_logger</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Running MyTask with arg some_arg=</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span>
+<span class="gp">... </span>                    <span class="n">some_arg</span><span class="p">))</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="mf">42</span>
+<span class="gp">... </span><span class="n">tasks</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">MyTask</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>You can delay the task using the classmethod <a title="celery.task.base.Task.delay" class="reference internal" href="#celery.task.base.Task.delay"><tt class="xref docutils literal"><span class="pre">delay()</span></tt></a>...</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">MyTask</span><span class="o">.</span><span class="n">delay</span><span class="p">(</span><span class="n">some_arg</span><span class="o">=</span><span class="s">&quot;foo&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">status</span> <span class="c"># after some time</span>
+<span class="go">&#39;DONE&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">result</span>
+<span class="go">42</span>
+</pre></div>
+</div>
+<p>...or using the <tt class="xref docutils literal"><span class="pre">delay_task()</span></tt> function, by passing the name of
+the task.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">delay_task</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">delay_task</span><span class="p">(</span><span class="n">MyTask</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">some_arg</span><span class="o">=</span><span class="s">&quot;foo&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<dl class="exception">
+<dt id="celery.task.base.Task.MaxRetriesExceededError">
+<em class="property">
+exception </em><tt class="descname">MaxRetriesExceededError</tt><a class="headerlink" href="#celery.task.base.Task.MaxRetriesExceededError" title="Permalink to this definition">¶</a></dt>
+<dd>The tasks max restart limit has been exceeded.</dd></dl>
+
+<dl class="classmethod">
+<dt id="celery.task.base.Task.apply">
+<em class="property">
+classmethod </em><tt class="descclassname">Task.</tt><tt class="descname">apply</tt><big>(</big><em>args=None</em>, <em>kwargs=None</em>, <em>**options</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.apply" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute this task at once, by blocking until the task
+has finished executing.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><em>args</em> &#8211; positional arguments passed on to the task.</li>
+<li><em>kwargs</em> &#8211; keyword arguments passed on to the task.</li>
+</ul>
+</td>
+</tr>
+<tr class="field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a title="celery.result.EagerResult" class="reference external" href="celery.result.html#celery.result.EagerResult"><tt class="xref docutils literal"><span class="pre">celery.result.EagerResult</span></tt></a></p>
+</td>
+</tr>
+</tbody>
+</table>
+<p>See <a title="celery.execute.apply" class="reference external" href="celery.execute.html#celery.execute.apply"><tt class="xref docutils literal"><span class="pre">celery.execute.apply()</span></tt></a>.</p>
+</dd></dl>
+
+<dl class="classmethod">
+<dt id="celery.task.base.Task.apply_async">
+<em class="property">
+classmethod </em><tt class="descclassname">Task.</tt><tt class="descname">apply_async</tt><big>(</big><em>args=None</em>, <em>kwargs=None</em>, <em>**options</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.apply_async" title="Permalink to this definition">¶</a></dt>
+<dd><p>Delay this task for execution by the <tt class="docutils literal"><span class="pre">celery</span></tt> daemon(s).</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>args</em> &#8211; positional arguments passed on to the task.</li>
+<li><em>kwargs</em> &#8211; keyword arguments passed on to the task.</li>
+<li><em>**options</em> &#8211; Any keyword arguments to pass on to
+<a title="celery.execute.apply_async" class="reference external" href="celery.execute.html#celery.execute.apply_async"><tt class="xref docutils literal"><span class="pre">celery.execute.apply_async()</span></tt></a>.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<p>See <a title="celery.execute.apply_async" class="reference external" href="celery.execute.html#celery.execute.apply_async"><tt class="xref docutils literal"><span class="pre">celery.execute.apply_async()</span></tt></a> for more information.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Return type:</th><td class="field-body"><a title="celery.result.AsyncResult" class="reference external" href="celery.result.html#celery.result.AsyncResult"><tt class="xref docutils literal"><span class="pre">celery.result.AsyncResult</span></tt></a></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="classmethod">
+<dt id="celery.task.base.Task.delay">
+<em class="property">
+classmethod </em><tt class="descclassname">Task.</tt><tt class="descname">delay</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.delay" title="Permalink to this definition">¶</a></dt>
+<dd><p>Delay this task for execution by the <tt class="docutils literal"><span class="pre">celery</span></tt> daemon(s).</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><em>*args</em> &#8211; positional arguments passed on to the task.</li>
+<li><em>**kwargs</em> &#8211; keyword arguments passed on to the task.</li>
+</ul>
+</td>
+</tr>
+<tr class="field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a title="celery.result.AsyncResult" class="reference external" href="celery.result.html#celery.result.AsyncResult"><tt class="xref docutils literal"><span class="pre">celery.result.AsyncResult</span></tt></a></p>
+</td>
+</tr>
+</tbody>
+</table>
+<p>See <a title="celery.execute.delay_task" class="reference external" href="celery.execute.html#celery.execute.delay_task"><tt class="xref docutils literal"><span class="pre">celery.execute.delay_task()</span></tt></a>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.task.base.Task.get_consumer">
+<tt class="descclassname">Task.</tt><tt class="descname">get_consumer</tt><big>(</big><em>connect_timeout=4</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.get_consumer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get a celery task message consumer.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Return type:</th><td class="field-body"><a title="celery.messaging.TaskConsumer" class="reference external" href="celery.messaging.html#celery.messaging.TaskConsumer"><tt class="xref docutils literal"><span class="pre">celery.messaging.TaskConsumer</span></tt></a>.</td>
+</tr>
+</tbody>
+</table>
+<p>Please be sure to close the AMQP connection when you&#8217;re done
+with this object. i.e.:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">consumer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_consumer</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="c"># do something with consumer</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">consumer</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.task.base.Task.get_logger">
+<tt class="descclassname">Task.</tt><tt class="descname">get_logger</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.get_logger" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get process-aware logger object.</p>
+<p>See <a title="celery.log.setup_logger" class="reference external" href="celery.log.html#celery.log.setup_logger"><tt class="xref docutils literal"><span class="pre">celery.log.setup_logger()</span></tt></a>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.task.base.Task.get_publisher">
+<tt class="descclassname">Task.</tt><tt class="descname">get_publisher</tt><big>(</big><em>connect_timeout=4</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.get_publisher" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get a celery task message publisher.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Return type:</th><td class="field-body"><a title="celery.messaging.TaskPublisher" class="reference external" href="celery.messaging.html#celery.messaging.TaskPublisher"><tt class="xref docutils literal"><span class="pre">celery.messaging.TaskPublisher</span></tt></a>.</td>
+</tr>
+</tbody>
+</table>
+<p>Please be sure to close the AMQP connection when you&#8217;re done
+with this object, i.e.:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">publisher</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_publisher</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="c"># do something with publisher</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">publisher</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.task.base.Task.on_failure">
+<tt class="descclassname">Task.</tt><tt class="descname">on_failure</tt><big>(</big><em>exc</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.on_failure" title="Permalink to this definition">¶</a></dt>
+<dd><p>Error handler.</p>
+<p>This is run by the worker when the task fails.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>exc</em> &#8211; The exception raised by the task.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.task.base.Task.on_retry">
+<tt class="descclassname">Task.</tt><tt class="descname">on_retry</tt><big>(</big><em>exc</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.on_retry" title="Permalink to this definition">¶</a></dt>
+<dd><p>Retry handler.</p>
+<p>This is run by the worker when the task is to be retried.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>exc</em> &#8211; The exception sent to <a title="celery.task.base.Task.retry" class="reference internal" href="#celery.task.base.Task.retry"><tt class="xref docutils literal"><span class="pre">retry()</span></tt></a>.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.task.base.Task.on_success">
+<tt class="descclassname">Task.</tt><tt class="descname">on_success</tt><big>(</big><em>retval</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.on_success" title="Permalink to this definition">¶</a></dt>
+<dd><p>Success handler.</p>
+<p>This is run by the worker when the task executed successfully.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>retval</em> &#8211; The return value of the task.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.task.base.Task.retry">
+<tt class="descclassname">Task.</tt><tt class="descname">retry</tt><big>(</big><em>args</em>, <em>kwargs</em>, <em>exc=None</em>, <em>throw=True</em>, <em>**options</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.retry" title="Permalink to this definition">¶</a></dt>
+<dd><p>Retry the task.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><em>args</em> &#8211; Positional arguments to retry with.</li>
+<li><em>kwargs</em> &#8211; Keyword arguments to retry with.</li>
+<li><em>exc</em> &#8211; Optional exception to raise instead of
+<tt class="xref docutils literal"><span class="pre">MaxRestartsExceededError</span></tt> when the max restart limit has
+been exceeded.</li>
+<li><em>throw</em> &#8211; Do not raise the
+<a title="celery.exceptions.RetryTaskError" class="reference external" href="celery.exceptions.html#celery.exceptions.RetryTaskError"><tt class="xref docutils literal"><span class="pre">celery.exceptions.RetryTaskError</span></tt></a> exception,
+that tells the worker that the task is to be retried.</li>
+<li><em>countdown</em> &#8211; Time in seconds to delay the retry for.</li>
+<li><em>eta</em> &#8211; Explicit time and date to run the retry at (must be a
+<tt class="xref docutils literal"><span class="pre">datetime.datetime</span></tt> instance).</li>
+<li><em>**options</em> &#8211; Any extra options to pass on to
+meth:<cite>apply_async</cite>. See <a title="celery.execute.apply_async" class="reference external" href="celery.execute.html#celery.execute.apply_async"><tt class="xref docutils literal"><span class="pre">celery.execute.apply_async()</span></tt></a>.</li>
+</ul>
+</td>
+</tr>
+<tr class="field"><th class="field-name" colspan="2">Raises <a title="celery.exceptions.RetryTaskError" class="reference external" href="celery.exceptions.html#celery.exceptions.RetryTaskError">celery.exceptions.RetryTaskError</a>:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body"><p class="first last">To tell the worker that the
+task has been re-sent for retry. This always happens except if
+the <tt class="docutils literal"><span class="pre">throw</span></tt> keyword argument has been explicitly set
+to <tt class="xref docutils literal"><span class="pre">False</span></tt>.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Example</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">TwitterPostStatusTask</span><span class="p">(</span><span class="n">Task</span><span class="p">):</span>
+<span class="gp">... </span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">twitter</span> <span class="o">=</span> <span class="n">Twitter</span><span class="p">(</span><span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="k">try</span><span class="p">:</span>
+<span class="gp">... </span>            <span class="n">twitter</span><span class="o">.</span><span class="n">post_status</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="k">except</span> <span class="n">twitter</span><span class="o">.</span><span class="n">FailWhale</span><span class="p">,</span> <span class="n">exc</span><span class="p">:</span>
+<span class="gp">... </span>            <span class="c"># Retry in 5 minutes.</span>
+<span class="gp">... </span>            <span class="bp">self</span><span class="o">.</span><span class="n">retry</span><span class="p">([</span><span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="p">,</span> <span class="n">message</span><span class="p">],</span> <span class="n">kwargs</span><span class="p">,</span>
+<span class="gp">... </span>                       <span class="n">countdown</span><span class="o">=</span><span class="mf">60</span> <span class="o">*</span> <span class="mf">5</span><span class="p">,</span> <span class="n">exc</span><span class="o">=</span><span class="n">exc</span><span class="p">)</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.task.base.Task.run">
+<tt class="descclassname">Task.</tt><tt class="descname">run</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.task.base.Task.run" title="Permalink to this definition">¶</a></dt>
+<dd><p><em>REQUIRED</em> The actual task.</p>
+<p>All subclasses of <a title="celery.task.base.Task" class="reference internal" href="#celery.task.base.Task"><tt class="xref docutils literal"><span class="pre">Task</span></tt></a> must define the run method.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name" colspan="2">Raises NotImplementedError:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">by default, so you have to override
+this method in your subclass.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.task.base.TaskSet">
+<em class="property">
+class </em><tt class="descclassname">celery.task.base.</tt><tt class="descname">TaskSet</tt><big>(</big><em>task</em>, <em>args</em><big>)</big><a class="headerlink" href="#celery.task.base.TaskSet" title="Permalink to this definition">¶</a></dt>
+<dd><p>A task containing several subtasks, making it possible
+to track how many, or when all of the tasks has been completed.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>task</em> &#8211; The task class or name.
+Can either be a fully qualified task name, or a task class.</li>
+<li><em>args</em> &#8211; A list of args, kwargs pairs.
+e.g. <tt class="docutils literal"><span class="pre">[[args1,</span> <span class="pre">kwargs1],</span> <span class="pre">[args2,</span> <span class="pre">kwargs2],</span> <span class="pre">...,</span> <span class="pre">[argsN,</span> <span class="pre">kwargsN]]</span></tt></li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.task.base.TaskSet.task_name">
+<tt class="descname">task_name</tt><a class="headerlink" href="#celery.task.base.TaskSet.task_name" title="Permalink to this definition">¶</a></dt>
+<dd>The name of the task.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.task.base.TaskSet.arguments">
+<tt class="descname">arguments</tt><a class="headerlink" href="#celery.task.base.TaskSet.arguments" title="Permalink to this definition">¶</a></dt>
+<dd>The arguments, as passed to the task set constructor.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.task.base.TaskSet.total">
+<tt class="descname">total</tt><a class="headerlink" href="#celery.task.base.TaskSet.total" title="Permalink to this definition">¶</a></dt>
+<dd>Total number of tasks in this task set.</dd></dl>
+
+<p>Example</p>
+<blockquote>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">djangofeeds.tasks</span> <span class="kn">import</span> <span class="n">RefreshFeedTask</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">taskset</span> <span class="o">=</span> <span class="n">TaskSet</span><span class="p">(</span><span class="n">RefreshFeedTask</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">[</span>
+<span class="gp">... </span>                <span class="p">[],</span> <span class="p">{</span><span class="s">&quot;feed_url&quot;</span><span class="p">:</span> <span class="s">&quot;http://cnn.com/rss&quot;</span><span class="p">},</span>
+<span class="gp">... </span>                <span class="p">[],</span> <span class="p">{</span><span class="s">&quot;feed_url&quot;</span><span class="p">:</span> <span class="s">&quot;http://bbc.com/rss&quot;</span><span class="p">},</span>
+<span class="gp">... </span>                <span class="p">[],</span> <span class="p">{</span><span class="s">&quot;feed_url&quot;</span><span class="p">:</span> <span class="s">&quot;http://xkcd.com/rss&quot;</span><span class="p">}])</span>
+</pre></div>
+</div>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">taskset_result</span> <span class="o">=</span> <span class="n">taskset</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">list_of_return_values</span> <span class="o">=</span> <span class="n">taskset</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
+</pre></div>
+</div>
+</blockquote>
+<dl class="method">
+<dt id="celery.task.base.TaskSet.join">
+<tt class="descname">join</tt><big>(</big><em>timeout=None</em><big>)</big><a class="headerlink" href="#celery.task.base.TaskSet.join" title="Permalink to this definition">¶</a></dt>
+<dd><p>Gather the results for all of the tasks in the taskset,
+and return a list with them ordered by the order of which they
+were called.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>timeout</em> &#8211; The time in seconds, how long
+it will wait for results, before the operation times out.</td>
+</tr>
+<tr class="field"><th class="field-name" colspan="2">Raises TimeoutError:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">if <tt class="docutils literal"><span class="pre">timeout</span></tt> is not <tt class="xref docutils literal"><span class="pre">None</span></tt>
+and the operation takes longer than <tt class="docutils literal"><span class="pre">timeout</span></tt> seconds.</td>
+</tr>
+</tbody>
+</table>
+<p>If any of the tasks raises an exception, the exception
+will be reraised by <a title="celery.task.base.TaskSet.join" class="reference internal" href="#celery.task.base.TaskSet.join"><tt class="xref docutils literal"><span class="pre">join()</span></tt></a>.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">list of return values for all tasks in the taskset.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="classmethod">
+<dt id="celery.task.base.TaskSet.map">
+<em class="property">
+classmethod </em><tt class="descname">map</tt><big>(</big><em>func</em>, <em>args</em>, <em>timeout=None</em><big>)</big><a class="headerlink" href="#celery.task.base.TaskSet.map" title="Permalink to this definition">¶</a></dt>
+<dd>Distribute processing of the arguments and collect the results.</dd></dl>
+
+<dl class="classmethod">
+<dt id="celery.task.base.TaskSet.map_async">
+<em class="property">
+classmethod </em><tt class="descname">map_async</tt><big>(</big><em>func</em>, <em>args</em>, <em>timeout=None</em><big>)</big><a class="headerlink" href="#celery.task.base.TaskSet.map_async" title="Permalink to this definition">¶</a></dt>
+<dd><p>Distribute processing of the arguments and collect the results
+asynchronously.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><a title="celery.result.AsyncResult" class="reference external" href="celery.result.html#celery.result.AsyncResult"><tt class="xref docutils literal"><span class="pre">celery.result.AsyncResult</span></tt></a> instance.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="classmethod">
+<dt id="celery.task.base.TaskSet.remote_execute">
+<em class="property">
+classmethod </em><tt class="descname">remote_execute</tt><big>(</big><em>func</em>, <em>args</em><big>)</big><a class="headerlink" href="#celery.task.base.TaskSet.remote_execute" title="Permalink to this definition">¶</a></dt>
+<dd>Apply <tt class="docutils literal"><span class="pre">args</span></tt> to function by distributing the args to the
+celery server(s).</dd></dl>
+
+<dl class="method">
+<dt id="celery.task.base.TaskSet.run">
+<tt class="descname">run</tt><big>(</big><em>connect_timeout=4</em><big>)</big><a class="headerlink" href="#celery.task.base.TaskSet.run" title="Permalink to this definition">¶</a></dt>
+<dd><p>Run all tasks in the taskset.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">A <a title="celery.result.TaskSetResult" class="reference external" href="celery.result.html#celery.result.TaskSetResult"><tt class="xref docutils literal"><span class="pre">celery.result.TaskSetResult</span></tt></a> instance.</td>
+</tr>
+</tbody>
+</table>
+<p>Example</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ts</span> <span class="o">=</span> <span class="n">TaskSet</span><span class="p">(</span><span class="n">RefreshFeedTask</span><span class="p">,</span> <span class="p">[</span>
+<span class="gp">... </span>        <span class="p">[</span><span class="s">&quot;http://foo.com/rss&quot;</span><span class="p">,</span> <span class="p">{}],</span>
+<span class="gp">... </span>        <span class="p">[</span><span class="s">&quot;http://bar.com/rss&quot;</span><span class="p">,</span> <span class="p">{}],</span>
+<span class="gp">... </span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">ts</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">taskset_id</span>
+<span class="go">&quot;d2c9b261-8eff-4bfb-8459-1e1b72063514&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">subtask_ids</span>
+<span class="go">[&quot;b4996460-d959-49c8-aeb9-39c530dcde25&quot;,</span>
+<span class="go">&quot;598d2d18-ab86-45ca-8b4f-0779f5d6a3cb&quot;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">waiting</span><span class="p">()</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">10</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">ready</span><span class="p">()</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">successful</span><span class="p">()</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">failed</span><span class="p">()</span>
+<span class="go">False</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
+<span class="go">[True, True]</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="index.html"
+                                  title="previous chapter">Module API Reference</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.execute.html"
+                                  title="next chapter">Executing Tasks - celery.execute</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.task.base.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.execute.html" title="Executing Tasks - celery.execute"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Module API Reference"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 149 - 0
reference/celery.task.builtins.html

@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Built-in Task Classes - celery.task.builtins &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Common Task Strategies - celery.task.strategy" href="celery.task.strategy.html" />
+    <link rel="prev" title="Exceptions - celery.exceptions" href="celery.exceptions.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.task.strategy.html" title="Common Task Strategies - celery.task.strategy"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.exceptions.html" title="Exceptions - celery.exceptions"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.task.builtins">
+<h1>Built-in Task Classes - celery.task.builtins<a class="headerlink" href="#module-celery.task.builtins" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="celery.task.builtins.DeleteExpiredTaskMetaTask">
+<em class="property">
+class </em><tt class="descclassname">celery.task.builtins.</tt><tt class="descname">DeleteExpiredTaskMetaTask</tt><a class="headerlink" href="#celery.task.builtins.DeleteExpiredTaskMetaTask" title="Permalink to this definition">¶</a></dt>
+<dd><p>A periodic task that deletes expired task metadata every day.</p>
+<p>This runs the current backend&#8217;s
+<a title="celery.backends.base.BaseBackend.cleanup" class="reference external" href="celery.backends.base.html#celery.backends.base.BaseBackend.cleanup"><tt class="xref docutils literal"><span class="pre">celery.backends.base.BaseBackend.cleanup()</span></tt></a> method.</p>
+<dl class="method">
+<dt id="celery.task.builtins.DeleteExpiredTaskMetaTask.run">
+<tt class="descname">run</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.task.builtins.DeleteExpiredTaskMetaTask.run" title="Permalink to this definition">¶</a></dt>
+<dd>The method run by <tt class="docutils literal"><span class="pre">celeryd</span></tt>.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.task.builtins.PingTask">
+<em class="property">
+class </em><tt class="descclassname">celery.task.builtins.</tt><tt class="descname">PingTask</tt><a class="headerlink" href="#celery.task.builtins.PingTask" title="Permalink to this definition">¶</a></dt>
+<dd><p>The task used by <tt class="xref docutils literal"><span class="pre">ping()</span></tt>.</p>
+<dl class="method">
+<dt id="celery.task.builtins.PingTask.run">
+<tt class="descname">run</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.task.builtins.PingTask.run" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the string <tt class="docutils literal"><span class="pre">&quot;pong&quot;</span></tt>.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.exceptions.html"
+                                  title="previous chapter">Exceptions - celery.exceptions</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.task.strategy.html"
+                                  title="next chapter">Common Task Strategies - celery.task.strategy</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.task.builtins.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.task.strategy.html" title="Common Task Strategies - celery.task.strategy"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.exceptions.html" title="Exceptions - celery.exceptions"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 229 - 0
reference/celery.task.html

@@ -0,0 +1,229 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Task Information and Utilities - celery.task &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Task Registry - celery.registry" href="celery.registry.html" />
+    <link rel="prev" title="Task Result - celery.result" href="celery.result.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.registry.html" title="Task Registry - celery.registry"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.result.html" title="Task Result - celery.result"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.task">
+<h1>Task Information and Utilities - celery.task<a class="headerlink" href="#module-celery.task" title="Permalink to this headline">¶</a></h1>
+<p>Working with tasks and task sets.</p>
+<dl class="function">
+<dt id="celery.task.discard_all">
+<tt class="descclassname">celery.task.</tt><tt class="descname">discard_all</tt><big>(</big><em>connect_timeout=4</em><big>)</big><a class="headerlink" href="#celery.task.discard_all" title="Permalink to this definition">¶</a></dt>
+<dd><p>Discard all waiting tasks.</p>
+<p>This will ignore all tasks waiting for execution, and they will
+be deleted from the messaging server.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the number of tasks discarded.</td>
+</tr>
+<tr class="field"><th class="field-name">Return type:</th><td class="field-body">int</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.task.dmap">
+<tt class="descclassname">celery.task.</tt><tt class="descname">dmap</tt><big>(</big><em>func</em>, <em>args</em>, <em>timeout=None</em><big>)</big><a class="headerlink" href="#celery.task.dmap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Distribute processing of the arguments and collect the results.</p>
+<p>Example</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">dmap</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">operator</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">dmap</span><span class="p">(</span><span class="n">operator</span><span class="o">.</span><span class="n">add</span><span class="p">,</span> <span class="p">[[</span><span class="mf">2</span><span class="p">,</span> <span class="mf">2</span><span class="p">],</span> <span class="p">[</span><span class="mf">4</span><span class="p">,</span> <span class="mf">4</span><span class="p">],</span> <span class="p">[</span><span class="mf">8</span><span class="p">,</span> <span class="mf">8</span><span class="p">]])</span>
+<span class="go">[4, 8, 16]</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.task.dmap_async">
+<tt class="descclassname">celery.task.</tt><tt class="descname">dmap_async</tt><big>(</big><em>func</em>, <em>args</em>, <em>timeout=None</em><big>)</big><a class="headerlink" href="#celery.task.dmap_async" title="Permalink to this definition">¶</a></dt>
+<dd><p>Distribute processing of the arguments and collect the results
+asynchronously.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><a title="celery.result.AsyncResult" class="reference external" href="celery.result.html#celery.result.AsyncResult"><tt class="xref docutils literal"><span class="pre">celery.result.AsyncResult</span></tt></a> object.</td>
+</tr>
+</tbody>
+</table>
+<p>Example</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">dmap_async</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">operator</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">presult</span> <span class="o">=</span> <span class="n">dmap_async</span><span class="p">(</span><span class="n">operator</span><span class="o">.</span><span class="n">add</span><span class="p">,</span> <span class="p">[[</span><span class="mf">2</span><span class="p">,</span> <span class="mf">2</span><span class="p">],</span> <span class="p">[</span><span class="mf">4</span><span class="p">,</span> <span class="mf">4</span><span class="p">],</span> <span class="p">[</span><span class="mf">8</span><span class="p">,</span> <span class="mf">8</span><span class="p">]])</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">presult</span>
+<span class="go">&lt;AsyncResult: 373550e8-b9a0-4666-bc61-ace01fa4f91d&gt;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">presult</span><span class="o">.</span><span class="n">status</span>
+<span class="go">&#39;DONE&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">presult</span><span class="o">.</span><span class="n">result</span>
+<span class="go">[4, 8, 16]</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.task.execute_remote">
+<tt class="descclassname">celery.task.</tt><tt class="descname">execute_remote</tt><big>(</big><em>func</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#celery.task.execute_remote" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute arbitrary function/object remotely.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>func</em> &#8211; A callable function or object.</li>
+<li><em>*args</em> &#8211; Positional arguments to apply to the function.</li>
+<li><em>**kwargs</em> &#8211; Keyword arguments to apply to the function.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<p>The object must be picklable, so you can&#8217;t use lambdas or functions
+defined in the REPL (the objects must have an associated module).</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">class:<cite>celery.result.AsyncResult</cite>.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.task.is_done">
+<tt class="descclassname">celery.task.</tt><tt class="descname">is_done</tt><big>(</big><em>task_id</em><big>)</big><a class="headerlink" href="#celery.task.is_done" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns <tt class="xref docutils literal"><span class="pre">True</span></tt> if task with <tt class="docutils literal"><span class="pre">task_id</span></tt> has been executed.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Return type:</th><td class="field-body">bool</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.task.ping">
+<tt class="descclassname">celery.task.</tt><tt class="descname">ping</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.task.ping" title="Permalink to this definition">¶</a></dt>
+<dd><p>Test if the server is alive.</p>
+<p>Example:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">ping</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ping</span><span class="p">()</span>
+<span class="go">&#39;pong&#39;</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.result.html"
+                                  title="previous chapter">Task Result - celery.result</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.registry.html"
+                                  title="next chapter">Task Registry - celery.registry</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.task.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.registry.html" title="Task Registry - celery.registry"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.result.html" title="Task Result - celery.result"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 157 - 0
reference/celery.task.strategy.html

@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Common Task Strategies - celery.task.strategy &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Loaders - celery.loaders" href="celery.loaders.html" />
+    <link rel="prev" title="Built-in Task Classes - celery.task.builtins" href="celery.task.builtins.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.html" title="Loaders - celery.loaders"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.task.builtins.html" title="Built-in Task Classes - celery.task.builtins"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.task.strategy">
+<h1>Common Task Strategies - celery.task.strategy<a class="headerlink" href="#module-celery.task.strategy" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="celery.task.strategy.even_time_distribution">
+<tt class="descclassname">celery.task.strategy.</tt><tt class="descname">even_time_distribution</tt><big>(</big><em>task</em>, <em>size</em>, <em>time_window</em>, <em>iterable</em>, <em>**apply_kwargs</em><big>)</big><a class="headerlink" href="#celery.task.strategy.even_time_distribution" title="Permalink to this definition">¶</a></dt>
+<dd><p>With an iterator yielding task args, kwargs tuples, evenly distribute
+the processing of its tasks throughout the time window available.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>task</em> &#8211; The kind of task (a <a title="celery.task.base.Task" class="reference external" href="celery.task.base.html#celery.task.base.Task"><tt class="xref docutils literal"><span class="pre">celery.task.base.Task</span></tt></a>.)</li>
+<li><em>size</em> &#8211; Total number of elements the iterator gives.</li>
+<li><em>time_window</em> &#8211; Total time available, in minutes.</li>
+<li><em>iterable</em> &#8211; Iterable yielding task args, kwargs tuples.</li>
+<li><em>**apply_kwargs</em> &#8211; Additional keyword arguments to be passed on to
+<a title="celery.execute.apply_async" class="reference external" href="celery.execute.html#celery.execute.apply_async"><tt class="xref docutils literal"><span class="pre">celery.execute.apply_async()</span></tt></a>.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Example</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">RefreshAllFeeds</span><span class="p">(</span><span class="n">Task</span><span class="p">):</span>
+<span class="gp">...</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">feeds</span> <span class="o">=</span> <span class="n">Feed</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
+<span class="gp">... </span>        <span class="n">total</span> <span class="o">=</span> <span class="n">feeds</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+<span class="gp">...</span>
+<span class="gp">... </span>        <span class="n">time_window</span> <span class="o">=</span> <span class="n">REFRESH_FEEDS_EVERY_INTERVAL_MINUTES</span>
+<span class="gp">...</span>
+<span class="gp">... </span>        <span class="k">def</span> <span class="nf">iter_feed_task_args</span><span class="p">(</span><span class="n">iterable</span><span class="p">):</span>
+<span class="gp">... </span>            <span class="k">for</span> <span class="n">feed</span> <span class="ow">in</span> <span class="n">iterable</span><span class="p">:</span>
+<span class="gp">... </span>                <span class="k">yield</span> <span class="p">([</span><span class="n">feed</span><span class="o">.</span><span class="n">feed_url</span><span class="p">],</span> <span class="p">{})</span> <span class="c"># args, kwargs tuple</span>
+<span class="gp">...</span>
+<span class="gp">... </span>        <span class="n">it</span> <span class="o">=</span> <span class="n">iter_feed_task_args</span><span class="p">(</span><span class="n">feeds</span><span class="o">.</span><span class="n">iterator</span><span class="p">())</span>
+<span class="gp">...</span>
+<span class="gp">... </span>        <span class="n">even_time_distribution</span><span class="p">(</span><span class="n">RefreshFeedTask</span><span class="p">,</span> <span class="n">total</span><span class="p">,</span>
+<span class="gp">... </span>                               <span class="n">time_window</span><span class="p">,</span> <span class="n">it</span><span class="p">)</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.task.builtins.html"
+                                  title="previous chapter">Built-in Task Classes - celery.task.builtins</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.loaders.html"
+                                  title="next chapter">Loaders - celery.loaders</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.task.strategy.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.loaders.html" title="Loaders - celery.loaders"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.task.builtins.html" title="Built-in Task Classes - celery.task.builtins"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 115 - 0
reference/celery.timer.html

@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Timers - celery.timer &mdash; Celery v0.3.20 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.3.20 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.3.20 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Celery Worker Daemon - celery.bin.celeryd" href="celery.bin.celeryd.html" />
+    <link rel="prev" title="Django Fields - celery.fields" href="celery.fields.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.bin.celeryd.html" title="Celery Worker Daemon - celery.bin.celeryd"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.fields.html" title="Django Fields - celery.fields"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.3.20 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="timers-celery-timer">
+<h1>Timers - celery.timer<a class="headerlink" href="#timers-celery-timer" title="Permalink to this headline">¶</a></h1>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.fields.html"
+                                  title="previous chapter">Django Fields - celery.fields</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.bin.celeryd.html"
+                                  title="next chapter">Celery Worker Daemon - celery.bin.celeryd</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.timer.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.bin.celeryd.html" title="Celery Worker Daemon - celery.bin.celeryd"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.fields.html" title="Django Fields - celery.fields"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.3.20 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 192 - 0
reference/celery.utils.html

@@ -0,0 +1,192 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Multiprocessing Worker - celery.worker &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Django Views - celery.views" href="celery.views.html" />
+    <link rel="prev" title="Logging - celery.log" href="celery.log.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.views.html" title="Django Views - celery.views"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.log.html" title="Logging - celery.log"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.utils">
+<h1>Multiprocessing Worker - celery.worker<a class="headerlink" href="#module-celery.utils" title="Permalink to this headline">¶</a></h1>
+<p>Utility functions</p>
+<dl class="function">
+<dt id="celery.utils.chunks">
+<tt class="descclassname">celery.utils.</tt><tt class="descname">chunks</tt><big>(</big><em>it</em>, <em>n</em><big>)</big><a class="headerlink" href="#celery.utils.chunks" title="Permalink to this definition">¶</a></dt>
+<dd><p>Split an iterator into chunks with <tt class="docutils literal"><span class="pre">n</span></tt> elements each.</p>
+<p>Examples</p>
+<blockquote>
+<p># n == 2
+&gt;&gt;&gt; x = chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 2)
+&gt;&gt;&gt; list(x)
+[[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10]]</p>
+<p># n == 3
+&gt;&gt;&gt; x = chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 3)
+&gt;&gt;&gt; list(x)
+[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]]</p>
+</blockquote>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.utils.gen_unique_id">
+<tt class="descclassname">celery.utils.</tt><tt class="descname">gen_unique_id</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.utils.gen_unique_id" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generate a unique id, having - hopefully - a very small chance of
+collission.</p>
+<p>For now this is provided by <tt class="xref docutils literal"><span class="pre">uuid.uuid4()</span></tt>.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.utils.get_full_cls_name">
+<tt class="descclassname">celery.utils.</tt><tt class="descname">get_full_cls_name</tt><big>(</big><em>cls</em><big>)</big><a class="headerlink" href="#celery.utils.get_full_cls_name" title="Permalink to this definition">¶</a></dt>
+<dd>With a class, get its full module and class name.</dd></dl>
+
+<dl class="function">
+<dt id="celery.utils.mitemgetter">
+<tt class="descclassname">celery.utils.</tt><tt class="descname">mitemgetter</tt><big>(</big><em>*keys</em><big>)</big><a class="headerlink" href="#celery.utils.mitemgetter" title="Permalink to this definition">¶</a></dt>
+<dd>Like <tt class="xref docutils literal"><span class="pre">operator.itemgetter()</span></tt> but returns <cite>None</cite> on missing keys
+instead of raising <tt class="xref docutils literal"><span class="pre">KeyError</span></tt>.</dd></dl>
+
+<dl class="function">
+<dt id="celery.utils.repeatlast">
+<tt class="descclassname">celery.utils.</tt><tt class="descname">repeatlast</tt><big>(</big><em>it</em><big>)</big><a class="headerlink" href="#celery.utils.repeatlast" title="Permalink to this definition">¶</a></dt>
+<dd>Iterate over all elements in the iterator, and when its exhausted
+yield the last value infinitely.</dd></dl>
+
+<dl class="function">
+<dt id="celery.utils.retry_over_time">
+<tt class="descclassname">celery.utils.</tt><tt class="descname">retry_over_time</tt><big>(</big><em>fun</em>, <em>catch</em>, <em>args=</em><span class="optional">[</span><span class="optional">]</span>, <em>kwargs={}</em>, <em>errback=&lt;function &lt;lambda&gt; at 0x21a7c70&gt;</em>, <em>max_retries=None</em>, <em>interval_start=2</em>, <em>interval_step=2</em>, <em>interval_max=30</em><big>)</big><a class="headerlink" href="#celery.utils.retry_over_time" title="Permalink to this definition">¶</a></dt>
+<dd><p>Retry the function over and over until max retries is exceeded.</p>
+<p>For each retry we sleep a for a while before we try again, this interval
+is increased for every retry until the max seconds is reached.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>fun</em> &#8211; The function to try</li>
+<li><em>catch</em> &#8211; Exceptions to catch, can be either tuple or a single
+exception class.</li>
+<li><em>args</em> &#8211; Positional arguments passed on to the function.</li>
+<li><em>kwargs</em> &#8211; Keyword arguments passed on to the function.</li>
+<li><em>errback</em> &#8211; Callback for when an exception in <tt class="docutils literal"><span class="pre">catch</span></tt> is raised.
+The callback must take two arguments: <tt class="docutils literal"><span class="pre">exc</span></tt> and <tt class="docutils literal"><span class="pre">interval</span></tt>, where
+<tt class="docutils literal"><span class="pre">exc</span></tt> is the exception instance, and <tt class="docutils literal"><span class="pre">interval</span></tt> is the time in
+seconds to sleep next..</li>
+<li><em>max_retries</em> &#8211; Maximum number of retries before we give up.
+If this is not set, we will retry forever.</li>
+<li><em>interval_start</em> &#8211; How long (in seconds) we start sleeping between
+retries.</li>
+<li><em>interval_step</em> &#8211; By how much the interval is increased for each
+retry.</li>
+<li><em>interval_max</em> &#8211; Maximum number of seconds to sleep between retries.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.log.html"
+                                  title="previous chapter">Logging - celery.log</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.views.html"
+                                  title="next chapter">Django Views - celery.views</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.utils.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.views.html" title="Django Views - celery.views"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.log.html" title="Logging - celery.log"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 138 - 0
reference/celery.views.html

@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Django Views - celery.views &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Django Model Managers - celery.managers" href="celery.managers.html" />
+    <link rel="prev" title="Multiprocessing Worker - celery.worker" href="celery.utils.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.managers.html" title="Django Model Managers - celery.managers"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.utils.html" title="Multiprocessing Worker - celery.worker"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.views">
+<h1>Django Views - celery.views<a class="headerlink" href="#module-celery.views" title="Permalink to this headline">¶</a></h1>
+<p>celery.views</p>
+<dl class="function">
+<dt id="celery.views.apply">
+<tt class="descclassname">celery.views.</tt><tt class="descname">apply</tt><big>(</big><em>request</em>, <em>task_name</em>, <em>*args</em><big>)</big><a class="headerlink" href="#celery.views.apply" title="Permalink to this definition">¶</a></dt>
+<dd><p>View applying a task.</p>
+<dl class="docutils">
+<dt>Example:</dt>
+<dd><a class="reference external" href="http://e.com/celery/apply/task_name/arg1/arg2//?kwarg1=a&amp;kwarg2=b">http://e.com/celery/apply/task_name/arg1/arg2//?kwarg1=a&amp;kwarg2=b</a></dd>
+</dl>
+<p><strong>NOTE</strong> Use with caution, preferably not make this publicly accessible
+without ensuring your code is safe!</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="celery.views.is_task_done">
+<tt class="descclassname">celery.views.</tt><tt class="descname">is_task_done</tt><big>(</big><em>request</em>, <em>task_id</em><big>)</big><a class="headerlink" href="#celery.views.is_task_done" title="Permalink to this definition">¶</a></dt>
+<dd>Returns task execute status in JSON format.</dd></dl>
+
+<dl class="function">
+<dt id="celery.views.task_status">
+<tt class="descclassname">celery.views.</tt><tt class="descname">task_status</tt><big>(</big><em>request</em>, <em>task_id</em><big>)</big><a class="headerlink" href="#celery.views.task_status" title="Permalink to this definition">¶</a></dt>
+<dd>Returns task status and result in JSON format.</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.utils.html"
+                                  title="previous chapter">Multiprocessing Worker - celery.worker</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.managers.html"
+                                  title="next chapter">Django Model Managers - celery.managers</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.views.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.managers.html" title="Django Model Managers - celery.managers"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.utils.html" title="Multiprocessing Worker - celery.worker"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 196 - 0
reference/celery.worker.controllers.html

@@ -0,0 +1,196 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Worker Controller Threads - celery.worker.controllers &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Task Pool - celery.pool" href="celery.pool.html" />
+    <link rel="prev" title="Executable Jobs - celery.worker.job" href="celery.worker.job.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.pool.html" title="Task Pool - celery.pool"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.job.html" title="Executable Jobs - celery.worker.job"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.worker.controllers">
+<h1>Worker Controller Threads - celery.worker.controllers<a class="headerlink" href="#module-celery.worker.controllers" title="Permalink to this headline">¶</a></h1>
+<p>Worker Controller Threads</p>
+<dl class="class">
+<dt id="celery.worker.controllers.BackgroundThread">
+<em class="property">
+class </em><tt class="descclassname">celery.worker.controllers.</tt><tt class="descname">BackgroundThread</tt><a class="headerlink" href="#celery.worker.controllers.BackgroundThread" title="Permalink to this definition">¶</a></dt>
+<dd><p>Thread running an infinite loop which for every iteration
+calls its <a title="celery.worker.controllers.BackgroundThread.on_iteration" class="reference internal" href="#celery.worker.controllers.BackgroundThread.on_iteration"><tt class="xref docutils literal"><span class="pre">on_iteration()</span></tt></a> method.</p>
+<p>This also implements graceful shutdown of the thread by providing
+the <a title="celery.worker.controllers.BackgroundThread.stop" class="reference internal" href="#celery.worker.controllers.BackgroundThread.stop"><tt class="xref docutils literal"><span class="pre">stop()</span></tt></a> method.</p>
+<dl class="method">
+<dt id="celery.worker.controllers.BackgroundThread.on_iteration">
+<tt class="descname">on_iteration</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.controllers.BackgroundThread.on_iteration" title="Permalink to this definition">¶</a></dt>
+<dd>This is the method called for every iteration and must be
+implemented by every subclass of <a title="celery.worker.controllers.BackgroundThread" class="reference internal" href="#celery.worker.controllers.BackgroundThread"><tt class="xref docutils literal"><span class="pre">BackgroundThread</span></tt></a>.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.controllers.BackgroundThread.on_start">
+<tt class="descname">on_start</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.controllers.BackgroundThread.on_start" title="Permalink to this definition">¶</a></dt>
+<dd>This handler is run at thread start, just before the infinite
+loop.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.controllers.BackgroundThread.on_stop">
+<tt class="descname">on_stop</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.controllers.BackgroundThread.on_stop" title="Permalink to this definition">¶</a></dt>
+<dd>This handler is run when the thread is shutdown.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.controllers.BackgroundThread.run">
+<tt class="descname">run</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.controllers.BackgroundThread.run" title="Permalink to this definition">¶</a></dt>
+<dd><p>This is the body of the thread.</p>
+<p>To start the thread use <tt class="xref docutils literal"><span class="pre">start()</span></tt> instead.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.controllers.BackgroundThread.stop">
+<tt class="descname">stop</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.controllers.BackgroundThread.stop" title="Permalink to this definition">¶</a></dt>
+<dd>Gracefully shutdown the thread.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.worker.controllers.Mediator">
+<em class="property">
+class </em><tt class="descclassname">celery.worker.controllers.</tt><tt class="descname">Mediator</tt><big>(</big><em>bucket_queue</em>, <em>callback</em><big>)</big><a class="headerlink" href="#celery.worker.controllers.Mediator" title="Permalink to this definition">¶</a></dt>
+<dd><p>Thread continuously sending tasks in the queue to the pool.</p>
+<dl class="attribute">
+<dt id="celery.worker.controllers.Mediator.bucket_queue">
+<tt class="descname">bucket_queue</tt><a class="headerlink" href="#celery.worker.controllers.Mediator.bucket_queue" title="Permalink to this definition">¶</a></dt>
+<dd>The task queue, a <tt class="xref docutils literal"><span class="pre">Queue.Queue</span></tt> instance.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.controllers.Mediator.callback">
+<tt class="descname">callback</tt><a class="headerlink" href="#celery.worker.controllers.Mediator.callback" title="Permalink to this definition">¶</a></dt>
+<dd>The callback used to process tasks retrieved from the
+<a title="celery.worker.controllers.Mediator.bucket_queue" class="reference internal" href="#celery.worker.controllers.Mediator.bucket_queue"><tt class="xref docutils literal"><span class="pre">bucket_queue</span></tt></a>.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.worker.controllers.PeriodicWorkController">
+<em class="property">
+class </em><tt class="descclassname">celery.worker.controllers.</tt><tt class="descname">PeriodicWorkController</tt><big>(</big><em>bucket_queue</em>, <em>hold_queue</em><big>)</big><a class="headerlink" href="#celery.worker.controllers.PeriodicWorkController" title="Permalink to this definition">¶</a></dt>
+<dd><p>A thread that continuously checks if there are
+<tt class="xref docutils literal"><span class="pre">celery.task.PeriodicTask</span></tt> tasks waiting for execution,
+and executes them. It also finds tasks in the hold queue that is
+ready for execution and moves them to the bucket queue.</p>
+<p>(Tasks in the hold queue are tasks waiting for retry, or with an
+<tt class="docutils literal"><span class="pre">eta</span></tt>/<tt class="docutils literal"><span class="pre">countdown</span></tt>.)</p>
+<dl class="method">
+<dt id="celery.worker.controllers.PeriodicWorkController.on_start">
+<tt class="descname">on_start</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.controllers.PeriodicWorkController.on_start" title="Permalink to this definition">¶</a></dt>
+<dd>Do backend-specific periodic task initialization.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.controllers.PeriodicWorkController.process_hold_queue">
+<tt class="descname">process_hold_queue</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.controllers.PeriodicWorkController.process_hold_queue" title="Permalink to this definition">¶</a></dt>
+<dd>Finds paused tasks that are ready for execution and move
+them to the <tt class="xref docutils literal"><span class="pre">bucket_queue</span></tt>.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.worker.job.html"
+                                  title="previous chapter">Executable Jobs - celery.worker.job</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.pool.html"
+                                  title="next chapter">Task Pool - celery.pool</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.worker.controllers.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.pool.html" title="Task Pool - celery.pool"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.job.html" title="Executable Jobs - celery.worker.job"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 295 - 0
reference/celery.worker.html

@@ -0,0 +1,295 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Multiprocessing Worker - celery.worker &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Executable Jobs - celery.worker.job" href="celery.worker.job.html" />
+    <link rel="prev" title="Messaging - celery.messaging" href="celery.messaging.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.job.html" title="Executable Jobs - celery.worker.job"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.messaging.html" title="Messaging - celery.messaging"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.worker">
+<h1>Multiprocessing Worker - celery.worker<a class="headerlink" href="#module-celery.worker" title="Permalink to this headline">¶</a></h1>
+<p>The Multiprocessing Worker Server</p>
+<p>Documentation for this module is in <tt class="docutils literal"><span class="pre">docs/reference/celery.worker.rst</span></tt>.</p>
+<dl class="class">
+<dt id="celery.worker.AMQPListener">
+<em class="property">
+class </em><tt class="descclassname">celery.worker.</tt><tt class="descname">AMQPListener</tt><big>(</big><em>bucket_queue</em>, <em>hold_queue</em>, <em>logger</em>, <em>initial_prefetch_count=2</em><big>)</big><a class="headerlink" href="#celery.worker.AMQPListener" title="Permalink to this definition">¶</a></dt>
+<dd><p>Listen for messages received from the AMQP broker and
+move them the the bucket queue for task processing.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>bucket_queue</em> &#8211; See <a title="celery.worker.AMQPListener.bucket_queue" class="reference internal" href="#celery.worker.AMQPListener.bucket_queue"><tt class="xref docutils literal"><span class="pre">bucket_queue</span></tt></a>.</li>
+<li><em>hold_queue</em> &#8211; See <a title="celery.worker.AMQPListener.hold_queue" class="reference internal" href="#celery.worker.AMQPListener.hold_queue"><tt class="xref docutils literal"><span class="pre">hold_queue</span></tt></a>.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.worker.AMQPListener.bucket_queue">
+<tt class="descname">bucket_queue</tt><a class="headerlink" href="#celery.worker.AMQPListener.bucket_queue" title="Permalink to this definition">¶</a></dt>
+<dd>The queue that holds tasks ready for processing immediately.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.AMQPListener.hold_queue">
+<tt class="descname">hold_queue</tt><a class="headerlink" href="#celery.worker.AMQPListener.hold_queue" title="Permalink to this definition">¶</a></dt>
+<dd>The queue that holds paused tasks. Reasons for being paused include
+a countdown/eta or that it&#8217;s waiting for retry.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.AMQPListener.logger">
+<tt class="descname">logger</tt><a class="headerlink" href="#celery.worker.AMQPListener.logger" title="Permalink to this definition">¶</a></dt>
+<dd>The logger used.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.AMQPListener.close_connection">
+<tt class="descname">close_connection</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.AMQPListener.close_connection" title="Permalink to this definition">¶</a></dt>
+<dd>Close the AMQP connection.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.AMQPListener.consume_messages">
+<tt class="descname">consume_messages</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.AMQPListener.consume_messages" title="Permalink to this definition">¶</a></dt>
+<dd>Consume messages forever (or until an exception is raised).</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.AMQPListener.receive_message">
+<tt class="descname">receive_message</tt><big>(</big><em>message_data</em>, <em>message</em><big>)</big><a class="headerlink" href="#celery.worker.AMQPListener.receive_message" title="Permalink to this definition">¶</a></dt>
+<dd><p>The callback called when a new message is received.</p>
+<p>If the message has an <tt class="docutils literal"><span class="pre">eta</span></tt> we move it to the hold queue,
+otherwise we move it the bucket queue for immediate processing.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.AMQPListener.reset_connection">
+<tt class="descname">reset_connection</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.AMQPListener.reset_connection" title="Permalink to this definition">¶</a></dt>
+<dd><p>Reset the AMQP connection, and reinitialize the
+<tt class="xref docutils literal"><span class="pre">carrot.messaging.ConsumerSet</span></tt> instance.</p>
+<p>Resets the task consumer in <tt class="xref docutils literal"><span class="pre">task_consumer</span></tt>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.AMQPListener.start">
+<tt class="descname">start</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.AMQPListener.start" title="Permalink to this definition">¶</a></dt>
+<dd><p>Start the consumer.</p>
+<p>If the connection is lost, it tries to re-establish the connection
+over time and restart consuming messages.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.AMQPListener.stop">
+<tt class="descname">stop</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.AMQPListener.stop" title="Permalink to this definition">¶</a></dt>
+<dd>Stop processing AMQP messages and close the connection
+to the broker.</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="celery.worker.WorkController">
+<em class="property">
+class </em><tt class="descclassname">celery.worker.</tt><tt class="descname">WorkController</tt><big>(</big><em>concurrency=None</em>, <em>logfile=None</em>, <em>loglevel=None</em>, <em>is_detached=False</em><big>)</big><a class="headerlink" href="#celery.worker.WorkController" title="Permalink to this definition">¶</a></dt>
+<dd><p>Executes tasks waiting in the task queue.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>concurrency</em> &#8211; see <a title="celery.worker.WorkController.concurrency" class="reference internal" href="#celery.worker.WorkController.concurrency"><tt class="xref docutils literal"><span class="pre">concurrency</span></tt></a>.</li>
+<li><em>logfile</em> &#8211; see <a title="celery.worker.WorkController.logfile" class="reference internal" href="#celery.worker.WorkController.logfile"><tt class="xref docutils literal"><span class="pre">logfile</span></tt></a>.</li>
+<li><em>loglevel</em> &#8211; see <a title="celery.worker.WorkController.loglevel" class="reference internal" href="#celery.worker.WorkController.loglevel"><tt class="xref docutils literal"><span class="pre">loglevel</span></tt></a>.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.worker.WorkController.concurrency">
+<tt class="descname">concurrency</tt><a class="headerlink" href="#celery.worker.WorkController.concurrency" title="Permalink to this definition">¶</a></dt>
+<dd>The number of simultaneous processes doing work (default:
+<a title="celery.conf.DAEMON_CONCURRENCY" class="reference external" href="celery.conf.html#celery.conf.DAEMON_CONCURRENCY"><tt class="xref docutils literal"><span class="pre">celery.conf.DAEMON_CONCURRENCY</span></tt></a>)</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.WorkController.loglevel">
+<tt class="descname">loglevel</tt><a class="headerlink" href="#celery.worker.WorkController.loglevel" title="Permalink to this definition">¶</a></dt>
+<dd>The loglevel used (default: <tt class="xref docutils literal"><span class="pre">logging.INFO</span></tt>)</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.WorkController.logfile">
+<tt class="descname">logfile</tt><a class="headerlink" href="#celery.worker.WorkController.logfile" title="Permalink to this definition">¶</a></dt>
+<dd>The logfile used, if no logfile is specified it uses <tt class="docutils literal"><span class="pre">stderr</span></tt>
+(default: <a title="celery.conf.DAEMON_LOG_FILE" class="reference external" href="celery.conf.html#celery.conf.DAEMON_LOG_FILE"><tt class="xref docutils literal"><span class="pre">celery.conf.DAEMON_LOG_FILE</span></tt></a>).</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.WorkController.logger">
+<tt class="descname">logger</tt><a class="headerlink" href="#celery.worker.WorkController.logger" title="Permalink to this definition">¶</a></dt>
+<dd>The <tt class="xref docutils literal"><span class="pre">logging.Logger</span></tt> instance used for logging.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.WorkController.is_detached">
+<tt class="descname">is_detached</tt><a class="headerlink" href="#celery.worker.WorkController.is_detached" title="Permalink to this definition">¶</a></dt>
+<dd>Flag describing if the worker is running as a daemon or not.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.WorkController.pool">
+<tt class="descname">pool</tt><a class="headerlink" href="#celery.worker.WorkController.pool" title="Permalink to this definition">¶</a></dt>
+<dd>The <tt class="xref docutils literal"><span class="pre">multiprocessing.Pool</span></tt> instance used.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.WorkController.bucket_queue">
+<tt class="descname">bucket_queue</tt><a class="headerlink" href="#celery.worker.WorkController.bucket_queue" title="Permalink to this definition">¶</a></dt>
+<dd>The <tt class="xref docutils literal"><span class="pre">Queue.Queue</span></tt> that holds tasks ready for immediate
+processing.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.WorkController.hold_queue">
+<tt class="descname">hold_queue</tt><a class="headerlink" href="#celery.worker.WorkController.hold_queue" title="Permalink to this definition">¶</a></dt>
+<dd>The <tt class="xref docutils literal"><span class="pre">Queue.Queue</span></tt> that holds paused tasks. Reasons for holding
+back the task include waiting for <tt class="docutils literal"><span class="pre">eta</span></tt> to pass or the task is being
+retried.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.WorkController.periodic_work_controller">
+<tt class="descname">periodic_work_controller</tt><a class="headerlink" href="#celery.worker.WorkController.periodic_work_controller" title="Permalink to this definition">¶</a></dt>
+<dd>Instance of <a title="celery.worker.controllers.PeriodicWorkController" class="reference external" href="celery.worker.controllers.html#celery.worker.controllers.PeriodicWorkController"><tt class="xref docutils literal"><span class="pre">celery.worker.controllers.PeriodicWorkController</span></tt></a>.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.WorkController.mediator">
+<tt class="descname">mediator</tt><a class="headerlink" href="#celery.worker.WorkController.mediator" title="Permalink to this definition">¶</a></dt>
+<dd>Instance of <a title="celery.worker.controllers.Mediator" class="reference external" href="celery.worker.controllers.html#celery.worker.controllers.Mediator"><tt class="xref docutils literal"><span class="pre">celery.worker.controllers.Mediator</span></tt></a>.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.WorkController.amqp_listener">
+<tt class="descname">amqp_listener</tt><a class="headerlink" href="#celery.worker.WorkController.amqp_listener" title="Permalink to this definition">¶</a></dt>
+<dd>Instance of <a title="celery.worker.AMQPListener" class="reference internal" href="#celery.worker.AMQPListener"><tt class="xref docutils literal"><span class="pre">AMQPListener</span></tt></a>.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.WorkController.process_task">
+<tt class="descname">process_task</tt><big>(</big><em>task</em><big>)</big><a class="headerlink" href="#celery.worker.WorkController.process_task" title="Permalink to this definition">¶</a></dt>
+<dd>Process task by sending it to the pool of workers.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.WorkController.safe_process_task">
+<tt class="descname">safe_process_task</tt><big>(</big><em>task</em><big>)</big><a class="headerlink" href="#celery.worker.WorkController.safe_process_task" title="Permalink to this definition">¶</a></dt>
+<dd>Same as <a title="celery.worker.WorkController.process_task" class="reference internal" href="#celery.worker.WorkController.process_task"><tt class="xref docutils literal"><span class="pre">process_task()</span></tt></a>, but catches all exceptions
+the task raises and log them as errors, to make sure the
+worker doesn&#8217;t die.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.WorkController.start">
+<tt class="descname">start</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.WorkController.start" title="Permalink to this definition">¶</a></dt>
+<dd>Starts the workers main loop.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.WorkController.stop">
+<tt class="descname">stop</tt><big>(</big><big>)</big><a class="headerlink" href="#celery.worker.WorkController.stop" title="Permalink to this definition">¶</a></dt>
+<dd>Gracefully shutdown the worker server.</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.messaging.html"
+                                  title="previous chapter">Messaging - celery.messaging</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.worker.job.html"
+                                  title="next chapter">Executable Jobs - celery.worker.job</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.worker.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.job.html" title="Executable Jobs - celery.worker.job"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.messaging.html" title="Messaging - celery.messaging"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 244 - 0
reference/celery.worker.job.html

@@ -0,0 +1,244 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Executable Jobs - celery.worker.job &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="up" title="Module API Reference" href="index.html" />
+    <link rel="next" title="Worker Controller Threads - celery.worker.controllers" href="celery.worker.controllers.html" />
+    <link rel="prev" title="Multiprocessing Worker - celery.worker" href="celery.worker.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.controllers.html" title="Worker Controller Threads - celery.worker.controllers"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.html" title="Multiprocessing Worker - celery.worker"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-celery.worker.job">
+<h1>Executable Jobs - celery.worker.job<a class="headerlink" href="#module-celery.worker.job" title="Permalink to this headline">¶</a></h1>
+<p>Jobs Executable by the Worker Server.</p>
+<dl class="class">
+<dt id="celery.worker.job.TaskWrapper">
+<em class="property">
+class </em><tt class="descclassname">celery.worker.job.</tt><tt class="descname">TaskWrapper</tt><big>(</big><em>task_name</em>, <em>task_id</em>, <em>task_func</em>, <em>args</em>, <em>kwargs</em>, <em>on_ack=&lt;function &lt;lambda&gt; at 0x21a7c70&gt;</em>, <em>retries=0</em>, <em>**opts</em><big>)</big><a class="headerlink" href="#celery.worker.job.TaskWrapper" title="Permalink to this definition">¶</a></dt>
+<dd><p>Class wrapping a task to be run.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>task_name</em> &#8211; see <a title="celery.worker.job.TaskWrapper.task_name" class="reference internal" href="#celery.worker.job.TaskWrapper.task_name"><tt class="xref docutils literal"><span class="pre">task_name</span></tt></a>.</li>
+<li><em>task_id</em> &#8211; see <a title="celery.worker.job.TaskWrapper.task_id" class="reference internal" href="#celery.worker.job.TaskWrapper.task_id"><tt class="xref docutils literal"><span class="pre">task_id</span></tt></a>.</li>
+<li><em>task_func</em> &#8211; see <a title="celery.worker.job.TaskWrapper.task_func" class="reference internal" href="#celery.worker.job.TaskWrapper.task_func"><tt class="xref docutils literal"><span class="pre">task_func</span></tt></a></li>
+<li><em>args</em> &#8211; see <a title="celery.worker.job.TaskWrapper.args" class="reference internal" href="#celery.worker.job.TaskWrapper.args"><tt class="xref docutils literal"><span class="pre">args</span></tt></a></li>
+<li><em>kwargs</em> &#8211; see <a title="celery.worker.job.TaskWrapper.kwargs" class="reference internal" href="#celery.worker.job.TaskWrapper.kwargs"><tt class="xref docutils literal"><span class="pre">kwargs</span></tt></a>.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<dl class="attribute">
+<dt id="celery.worker.job.TaskWrapper.task_name">
+<tt class="descname">task_name</tt><a class="headerlink" href="#celery.worker.job.TaskWrapper.task_name" title="Permalink to this definition">¶</a></dt>
+<dd>Kind of task. Must be a name registered in the task registry.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.job.TaskWrapper.task_id">
+<tt class="descname">task_id</tt><a class="headerlink" href="#celery.worker.job.TaskWrapper.task_id" title="Permalink to this definition">¶</a></dt>
+<dd>UUID of the task.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.job.TaskWrapper.task_func">
+<tt class="descname">task_func</tt><a class="headerlink" href="#celery.worker.job.TaskWrapper.task_func" title="Permalink to this definition">¶</a></dt>
+<dd>The tasks callable object.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.job.TaskWrapper.args">
+<tt class="descname">args</tt><a class="headerlink" href="#celery.worker.job.TaskWrapper.args" title="Permalink to this definition">¶</a></dt>
+<dd>List of positional arguments to apply to the task.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.job.TaskWrapper.kwargs">
+<tt class="descname">kwargs</tt><a class="headerlink" href="#celery.worker.job.TaskWrapper.kwargs" title="Permalink to this definition">¶</a></dt>
+<dd>Mapping of keyword arguments to apply to the task.</dd></dl>
+
+<dl class="attribute">
+<dt id="celery.worker.job.TaskWrapper.message">
+<tt class="descname">message</tt><a class="headerlink" href="#celery.worker.job.TaskWrapper.message" title="Permalink to this definition">¶</a></dt>
+<dd>The original message sent. Used for acknowledging the message.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.job.TaskWrapper.execute">
+<tt class="descname">execute</tt><big>(</big><em>loglevel=None</em>, <em>logfile=None</em><big>)</big><a class="headerlink" href="#celery.worker.job.TaskWrapper.execute" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute the task in a <a title="celery.execute.ExecuteWrapper" class="reference external" href="celery.execute.html#celery.execute.ExecuteWrapper"><tt class="xref docutils literal"><span class="pre">celery.execute.ExecuteWrapper</span></tt></a>.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>loglevel</em> &#8211; The loglevel used by the task.</li>
+<li><em>logfile</em> &#8211; The logfile used by the task.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.job.TaskWrapper.execute_using_pool">
+<tt class="descname">execute_using_pool</tt><big>(</big><em>pool</em>, <em>loglevel=None</em>, <em>logfile=None</em><big>)</big><a class="headerlink" href="#celery.worker.job.TaskWrapper.execute_using_pool" title="Permalink to this definition">¶</a></dt>
+<dd><p>Like <a title="celery.worker.job.TaskWrapper.execute" class="reference internal" href="#celery.worker.job.TaskWrapper.execute"><tt class="xref docutils literal"><span class="pre">execute()</span></tt></a>, but using the <tt class="xref docutils literal"><span class="pre">multiprocessing</span></tt> pool.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><em>pool</em> &#8211; A <tt class="xref docutils literal"><span class="pre">multiprocessing.Pool</span></tt> instance.</li>
+<li><em>loglevel</em> &#8211; The loglevel used by the task.</li>
+<li><em>logfile</em> &#8211; The logfile used by the task.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<p>:returns <tt class="xref docutils literal"><span class="pre">multiprocessing.AsyncResult</span></tt> instance.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.job.TaskWrapper.extend_with_default_kwargs">
+<tt class="descname">extend_with_default_kwargs</tt><big>(</big><em>loglevel</em>, <em>logfile</em><big>)</big><a class="headerlink" href="#celery.worker.job.TaskWrapper.extend_with_default_kwargs" title="Permalink to this definition">¶</a></dt>
+<dd><p>Extend the tasks keyword arguments with standard task arguments.</p>
+<p>These are <tt class="docutils literal"><span class="pre">logfile</span></tt>, <tt class="docutils literal"><span class="pre">loglevel</span></tt>, <tt class="docutils literal"><span class="pre">task_id</span></tt> and <tt class="docutils literal"><span class="pre">task_name</span></tt>.</p>
+</dd></dl>
+
+<dl class="classmethod">
+<dt id="celery.worker.job.TaskWrapper.from_message">
+<em class="property">
+classmethod </em><tt class="descname">from_message</tt><big>(</big><em>message</em>, <em>message_data</em>, <em>logger=None</em><big>)</big><a class="headerlink" href="#celery.worker.job.TaskWrapper.from_message" title="Permalink to this definition">¶</a></dt>
+<dd><p>Create a <a title="celery.worker.job.TaskWrapper" class="reference internal" href="#celery.worker.job.TaskWrapper"><tt class="xref docutils literal"><span class="pre">TaskWrapper</span></tt></a> from a task message sent by
+<a title="celery.messaging.TaskPublisher" class="reference external" href="celery.messaging.html#celery.messaging.TaskPublisher"><tt class="xref docutils literal"><span class="pre">celery.messaging.TaskPublisher</span></tt></a>.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name" colspan="2">Raises UnknownTaskError:</th></tr>
+<tr><td>&nbsp;</td><td class="field-body">if the message does not describe a task,
+the message is also rejected.</td>
+</tr>
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><a title="celery.worker.job.TaskWrapper" class="reference internal" href="#celery.worker.job.TaskWrapper"><tt class="xref docutils literal"><span class="pre">TaskWrapper</span></tt></a> instance.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.job.TaskWrapper.on_failure">
+<tt class="descname">on_failure</tt><big>(</big><em>exc_info</em><big>)</big><a class="headerlink" href="#celery.worker.job.TaskWrapper.on_failure" title="Permalink to this definition">¶</a></dt>
+<dd>The handler used if the task raised an exception.</dd></dl>
+
+<dl class="method">
+<dt id="celery.worker.job.TaskWrapper.on_success">
+<tt class="descname">on_success</tt><big>(</big><em>ret_value</em><big>)</big><a class="headerlink" href="#celery.worker.job.TaskWrapper.on_success" title="Permalink to this definition">¶</a></dt>
+<dd>The handler used if the task was successfully processed (
+without raising an exception).</dd></dl>
+
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="celery.worker.html"
+                                  title="previous chapter">Multiprocessing Worker - celery.worker</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.worker.controllers.html"
+                                  title="next chapter">Worker Controller Threads - celery.worker.controllers</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/celery.worker.job.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.controllers.html" title="Worker Controller Threads - celery.worker.controllers"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="celery.worker.html" title="Multiprocessing Worker - celery.worker"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li>
+          <li><a href="index.html" >Module API Reference</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 161 - 0
reference/index.html

@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Module API Reference &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="../static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../static/jquery.js"></script>
+    <script type="text/javascript" src="../static/doctools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
+    <link rel="next" title="Defining Tasks - celery.task.base" href="celery.task.base.html" />
+    <link rel="prev" title="Frequently Asked Questions" href="../faq.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li class="right" >
+          <a href="celery.task.base.html" title="Defining Tasks - celery.task.base"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="../faq.html" title="Frequently Asked Questions"
+             accesskey="P">previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-api-reference">
+<h1>Module API Reference<a class="headerlink" href="#module-api-reference" title="Permalink to this headline">¶</a></h1>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Release:</th><td class="field-body">0.7</td>
+</tr>
+<tr class="field"><th class="field-name">Date:</th><td class="field-body">August 27, 2009</td>
+</tr>
+</tbody>
+</table>
+<ul>
+<li class="toctree-l1"><a class="reference external" href="celery.task.base.html">Defining Tasks - celery.task.base</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.execute.html">Executing Tasks - celery.execute</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.result.html">Task Result - celery.result</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.task.html">Task Information and Utilities - celery.task</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.registry.html">Task Registry - celery.registry</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.signals.html">Signals - celery.signals</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.exceptions.html">Exceptions - celery.exceptions</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.task.builtins.html">Built-in Task Classes - celery.task.builtins</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.task.strategy.html">Common Task Strategies - celery.task.strategy</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.loaders.html">Loaders - celery.loaders</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.loaders.base.html">Loader Base Classes - celery.loaders.base</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.loaders.default.html">Default Loader - celery.loaders.default</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.loaders.djangoapp.html">Django Loader - celery.loaders.djangoapp</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.discovery.html">Task Discovery - celery.discovery</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.monitoring.html">Statistics and Monitoring - celery.monitoring</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.messaging.html">Messaging - celery.messaging</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.worker.html">Multiprocessing Worker - celery.worker</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.worker.job.html">Executable Jobs - celery.worker.job</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.worker.controllers.html">Worker Controller Threads - celery.worker.controllers</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.pool.html">Task Pool - celery.pool</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.supervisor.html">Process Supervisor - celery.supervisor</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.backends.html">Backends - celery.backends</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.backends.base.html">Backend: Base - celery.backends.base</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.backends.database.html">Backend: Database - celery.backends.database</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.backends.cache.html">Backend: Cache - celery.backends.cache</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.backends.amqp.html">Backend: AMQP - celery.backends.amqp</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.backends.tyrant.html">Backend: Tokyo Tyrant - celery.backends.tyrant</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.conf.html">Configuration - celery.conf</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.datastructures.html">Datastructures - celery.datastructures</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.log.html">Logging - celery.log</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.utils.html">Multiprocessing Worker - celery.worker</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.views.html">Django Views - celery.views</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.managers.html">Django Model Managers - celery.managers</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.models.html">Django Models - celery.models</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.fields.html">Django Fields - celery.fields</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.bin.celeryd.html">Celery Worker Daemon - celery.bin.celeryd</a></li>
+<li class="toctree-l1"><a class="reference external" href="celery.bin.celeryinit.html">Celery Initialize - celery.bin.celeryinit</a></li>
+</ul>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="../faq.html"
+                                  title="previous chapter">Frequently Asked Questions</a></p>
+            <h4>Next topic</h4>
+            <p class="topless"><a href="celery.task.base.html"
+                                  title="next chapter">Defining Tasks - celery.task.base</a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../sources/reference/index.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="celery.task.base.html" title="Defining Tasks - celery.task.base"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="../faq.html" title="Frequently Asked Questions"
+             >previous</a> |</li>
+        <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  </body>
+</html>

+ 97 - 0
search.html

@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Search &mdash; Celery v0.7.0 (unstable) documentation</title>
+    <link rel="stylesheet" href="static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.7.0 (unstable)',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="static/jquery.js"></script>
+    <script type="text/javascript" src="static/doctools.js"></script>
+    <script type="text/javascript" src="static/searchtools.js"></script>
+    <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             accesskey="M">modules</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <h1 id="search-documentation">Search</h1>
+  <div id="fallback" class="admonition warning">
+  <script type="text/javascript">$('#fallback').hide();</script>
+  <p>
+    Please activate JavaScript to enable the search
+    functionality.
+  </p>
+  </div>
+  <p>
+    From here you can search these documents. Enter your search
+    words into the box below and click "search". Note that the search
+    function will automatically search for all of the words. Pages
+    containing fewer words won't appear in the result list.
+  </p>
+  <form action="" method="get">
+    <input type="text" name="q" value="" />
+    <input type="submit" value="search" />
+    <span id="search-progress" style="padding-left: 10px"></span>
+  </form>
+  
+  <div id="search-results">
+  
+  </div>
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="modindex.html" title="Global Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+  
+    <div class="footer">
+      &copy; Copyright 2009, Ask Solem.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
+    </div>
+  <script type="text/javascript" src="searchindex.js"></script>
+
+  </body>
+</html>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
searchindex.js


+ 519 - 0
sources/changelog.txt

@@ -0,0 +1,519 @@
+==============
+Change history
+==============
+
+0.6.0 [2009-08-07 06:54 A.M CET]
+--------------------------------
+
+**IMPORTANT CHANGES**
+
+* Fixed a bug where tasks raising unpickleable exceptions crashed pool
+	workers. So if you've had pool workers mysteriously dissapearing, or
+	problems with celeryd stopping working, this has been fixed in this
+	version.
+
+* Fixed a race condition with periodic tasks.
+
+* The task pool is now supervised, so if a pool worker crashes,
+	goes away or stops responding, it is automatically replaced with
+	a new one.
+
+* Task.name is now automatically generated out of class module+name, e.g.
+	``"djangotwitter.tasks.UpdateStatusesTask"``. Very convenient. No idea why
+	we didn't do this before. Some documentation is updated to not manually
+	specify a task name.
+
+**NEWS**
+
+* Tested with Django 1.1
+
+* New Tutorial: Creating a click counter using carrot and celery
+
+* Database entries for periodic tasks are now created at ``celeryd``
+	startup instead of for each check (which has been a forgotten TODO/XXX
+	in the code for a long time)
+
+* New settings variable: ``CELERY_TASK_RESULT_EXPIRES``
+	Time (in seconds, or a `datetime.timedelta` object) for when after
+	stored task results are deleted. For the moment this only works for the
+	database backend.
+
+* ``celeryd`` now emits a debug log message for which periodic tasks
+	has been launched.
+
+* The periodic task table is now locked for reading while getting
+	periodic task status. (MySQL only so far, seeking patches for other
+	engines)
+
+* A lot more debugging information is now available by turning on the
+	``DEBUG`` loglevel (``--loglevel=DEBUG``).
+
+* Functions/methods with a timeout argument now works correctly.
+
+* New: ``celery.strategy.even_time_distribution``: 
+	With an iterator yielding task args, kwargs tuples, evenly distribute
+	the processing of its tasks throughout the time window available.
+
+* Log message ``Unknown task ignored...`` now has loglevel ``ERROR``
+
+* Log message ``"Got task from broker"`` is now emitted for all tasks, even if
+	the task has an ETA (estimated time of arrival). Also the message now
+	includes the ETA for the task (if any).
+
+* Acknowledgement now happens in the pool callback. Can't do ack in the job
+	target, as it's not pickleable (can't share AMQP connection, etc)).
+
+* Added note about .delay hanging in README
+
+* Tests now passing in Django 1.1
+
+* Fixed discovery to make sure app is in INSTALLED_APPS
+
+* Previously overrided pool behaviour (process reap, wait until pool worker
+	available, etc.) is now handled by ``multiprocessing.Pool`` itself.
+
+* Convert statistics data to unicode for use as kwargs. Thanks Lucy!
+
+0.4.1 [2009-07-02 01:42 P.M CET]
+--------------------------------
+
+* Fixed a bug with parsing the message options (``mandatory``,
+  ``routing_key``, ``priority``, ``immediate``)
+
+0.4.0 [2009-07-01 07:29 P.M CET] 
+--------------------------------
+
+* Adds eager execution. ``celery.execute.apply``|``Task.apply`` executes the
+  function blocking until the task is done, for API compatiblity it
+  returns an ``celery.result.EagerResult`` instance. You can configure
+  celery to always run tasks locally by setting the
+  ``CELERY_ALWAYS_EAGER`` setting to ``True``.
+
+* Now depends on ``anyjson``.
+
+* 99% coverage using python ``coverage`` 3.0.
+
+0.3.20 [2009-06-25 08:42 P.M CET] 
+---------------------------------
+
+* New arguments to ``apply_async`` (the advanced version of
+  ``delay_task``), ``countdown`` and ``eta``;
+
+	>>> # Run 10 seconds into the future.
+	>>> res = apply_async(MyTask, countdown=10);
+
+	>>> # Run 1 day from now
+	>>> res = apply_async(MyTask, eta=datetime.now() + 
+	...									timedelta(days=1)
+
+* Now unlinks the pidfile if it's stale.
+
+* Lots of more tests.
+
+* Now compatible with carrot >= 0.5.0.
+
+* **IMPORTANT** The ``subtask_ids`` attribute on the ``TaskSetResult``
+  instance has been removed. To get this information instead use:
+
+		>>> subtask_ids = [subtask.task_id for subtask in ts_res.subtasks]
+
+*	``Taskset.run()`` now respects extra message options from the task class.
+
+* Task: Add attribute ``ignore_result``: Don't store the status and
+  return value. This means you can't use the
+  ``celery.result.AsyncResult`` to check if the task is
+  done, or get its return value. Only use if you need the performance
+  and is able live without these features. Any exceptions raised will
+  store the return value/status as usual.
+
+* Task: Add attribute ``disable_error_emails`` to disable sending error
+  emails for that task.
+
+* Should now work on Windows (although running in the background won't
+  work, so using the ``--detach`` argument results in an exception
+  being raised.)
+
+* Added support for statistics for profiling and monitoring.
+  To start sending statistics start ``celeryd`` with the
+  ``--statistics`` option. Then after a while you can dump the results
+  by running ``python manage.py celerystats``. See
+  ``celery.monitoring`` for more information.
+
+* The celery daemon can now be supervised (i.e it is automatically
+  restarted if it crashes). To use this start celeryd with the
+  ``--supervised`` option (or alternatively ``-S``).
+
+* views.apply: View applying a task. Example::
+
+	http://e.com/celery/apply/task_name/arg1/arg2//?kwarg1=a&kwarg2=b
+
+  **NOTE** Use with caution, preferably not make this publicly
+  accessible without ensuring your code is safe!
+
+* Refactored ``celery.task``. It's now split into three modules:
+
+	* celery.task
+
+		Contains ``apply_async``, ``delay_task``, ``discard_all``, and task
+		shortcuts, plus imports objects from ``celery.task.base`` and
+		``celery.task.builtins``
+
+	* celery.task.base
+
+		Contains task base classes: ``Task``, ``PeriodicTask``,
+		``TaskSet``, ``AsynchronousMapTask``, ``ExecuteRemoteTask``.
+
+	* celery.task.builtins
+
+		Built-in tasks: ``PingTask``, ``DeleteExpiredTaskMetaTask``.
+
+
+0.3.7 [2008-06-16 11:41 P.M CET] 
+--------------------------------
+
+* **IMPORTANT** Now uses AMQP's ``basic.consume`` instead of
+  ``basic.get``. This means we're no longer polling the broker for
+  new messages.
+
+* **IMPORTANT** Default concurrency limit is now set to the number of CPUs
+  available on the system.
+
+* **IMPORTANT** ``tasks.register``: Renamed ``task_name`` argument to
+  ``name``, so
+
+		>>> tasks.register(func, task_name="mytask")
+
+  has to be replaced with:
+
+		>>> tasks.register(func, name="mytask")
+
+* The daemon now correctly runs if the pidlock is stale.
+
+* Now compatible with carrot 0.4.5
+
+* Default AMQP connnection timeout is now 4 seconds.
+* ``AsyncResult.read()`` was always returning ``True``.
+
+*  Only use README as long_description if the file exists so easy_install
+   doesn't break.
+
+* ``celery.view``: JSON responses now properly set its mime-type. 
+
+* ``apply_async`` now has a ``connection`` keyword argument so you
+  can re-use the same AMQP connection if you want to execute
+  more than one task.
+
+* Handle failures in task_status view such that it won't throw 500s.
+
+* Fixed typo ``AMQP_SERVER`` in documentation to ``AMQP_HOST``.
+
+* Worker exception e-mails sent to admins now works properly.
+
+* No longer depends on ``django``, so installing ``celery`` won't affect
+  the preferred Django version installed.
+
+* Now works with PostgreSQL (psycopg2) again by registering the
+  ``PickledObject`` field.
+
+* ``celeryd``: Added ``--detach`` option as an alias to ``--daemon``, and
+  it's the term used in the documentation from now on.
+
+* Make sure the pool and periodic task worker thread is terminated
+  properly at exit. (So ``Ctrl-C`` works again).
+
+* Now depends on ``python-daemon``.
+
+* Removed dependency to ``simplejson``
+
+* Cache Backend: Re-establishes connection for every task process
+  if the Django cache backend is memcached/libmemcached.
+
+* Tyrant Backend: Now re-establishes the connection for every task
+  executed.
+
+0.3.3 [2009-06-08 01:07 P.M CET] 
+--------------------------------
+
+	* The ``PeriodicWorkController`` now sleeps for 1 second between checking
+		for periodic tasks to execute.
+
+0.3.2 [2009-06-08 01:07 P.M CET]
+--------------------------------
+
+* celeryd: Added option ``--discard``: Discard (delete!) all waiting
+  messages in the queue.
+
+* celeryd: The ``--wakeup-after`` option was not handled as a float.
+
+0.3.1 [2009-06-08 01:07 P.M CET]
+--------------------------------
+
+* The `PeriodicTask`` worker is now running in its own thread instead
+  of blocking the ``TaskController`` loop.
+
+* Default ``QUEUE_WAKEUP_AFTER`` has been lowered to ``0.1`` (was ``0.3``)
+
+0.3.0 [2009-06-08 12:41 P.M CET]
+--------------------------------
+
+**NOTE** This is a development version, for the stable release, please
+see versions 0.2.x.
+
+**VERY IMPORTANT:** Pickle is now the encoder used for serializing task
+arguments, so be sure to flush your task queue before you upgrade.
+
+* **IMPORTANT** TaskSet.run() now returns a celery.result.TaskSetResult
+  instance, which lets you inspect the status and return values of a
+  taskset as it was a single entity.
+
+* **IMPORTANT** Celery now depends on carrot >= 0.4.1.
+
+* The celery daemon now sends task errors to the registered admin e-mails.
+  To turn off this feature, set ``SEND_CELERY_TASK_ERROR_EMAILS`` to
+  ``False`` in your ``settings.py``. Thanks to Grégoire Cachet.
+
+* You can now run the celery daemon by using ``manage.py``::
+
+		$ python manage.py celeryd
+
+  Thanks to Grégoire Cachet.
+
+* Added support for message priorities, topic exchanges, custom routing
+  keys for tasks. This means we have introduced
+  ``celery.task.apply_async``, a new way of executing tasks.
+
+  You can use ``celery.task.delay`` and ``celery.Task.delay`` like usual, but
+  if you want greater control over the message sent, you want
+  ``celery.task.apply_async`` and ``celery.Task.apply_async``.
+
+  This also means the AMQP configuration has changed. Some settings has
+  been renamed, while others are new::
+
+		CELERY_AMQP_EXCHANGE
+		CELERY_AMQP_PUBLISHER_ROUTING_KEY
+		CELERY_AMQP_CONSUMER_ROUTING_KEY
+		CELERY_AMQP_CONSUMER_QUEUE
+		CELERY_AMQP_EXCHANGE_TYPE
+
+  See the entry `Can I send some tasks to only some servers?`_ in the
+  `FAQ`_ for more information.
+
+.. _`Can I send some tasks to only some servers?`:
+		http://bit.ly/celery_AMQP_routing
+.. _`FAQ`: http://ask.github.com/celery/faq.html
+
+* Task errors are now logged using loglevel ``ERROR`` instead of ``INFO``,
+  and backtraces are dumped. Thanks to Grégoire Cachet.
+
+* Make every new worker process re-establish it's Django DB connection,
+  this solving the "MySQL connection died?" exceptions.
+  Thanks to Vitaly Babiy and Jirka Vejrazka.
+
+* **IMOPORTANT** Now using pickle to encode task arguments. This means you
+  now can pass complex python objects to tasks as arguments.
+
+* Removed dependency to ``yadayada``.
+
+* Added a FAQ, see ``docs/faq.rst``.
+
+* Now converts any unicode keys in task ``kwargs`` to regular strings.
+  Thanks Vitaly Babiy.
+
+* Renamed the ``TaskDaemon`` to ``WorkController``.
+
+* ``celery.datastructures.TaskProcessQueue`` is now renamed to
+  ``celery.pool.TaskPool``.
+
+* The pool algorithm has been refactored for greater performance and
+  stability.
+
+0.2.0 [2009-05-20 05:14 P.M CET]
+--------------------------------
+
+* Final release of 0.2.0
+
+* Compatible with carrot version 0.4.0.
+
+* Fixes some syntax errors related to fetching results
+  from the database backend.
+
+0.2.0-pre3 [2009-05-20 05:14 P.M CET]
+-------------------------------------
+
+* *Internal release*. Improved handling of unpickled exceptions,
+  ``get_result`` now tries to recreate something looking like the
+  original exception.
+
+0.2.0-pre2 [2009-05-20 01:56 P.M CET]
+-------------------------------------
+
+* Now handles unpickleable exceptions (like the dynimically generated
+  subclasses of ``django.core.exception.MultipleObjectsReturned``).
+
+0.2.0-pre1 [2009-05-20 12:33 P.M CET]
+-------------------------------------
+
+* It's getting quite stable, with a lot of new features, so bump
+  version to 0.2. This is a pre-release.
+
+* ``celery.task.mark_as_read()`` and ``celery.task.mark_as_failure()`` has
+  been removed. Use ``celery.backends.default_backend.mark_as_read()``, 
+  and ``celery.backends.default_backend.mark_as_failure()`` instead.
+
+0.1.15 [2009-05-19 04:13 P.M CET]
+---------------------------------
+
+* The celery daemon was leaking AMQP connections, this should be fixed,
+  if you have any problems with too many files open (like ``emfile``
+  errors in ``rabbit.log``, please contact us!
+
+0.1.14 [2009-05-19 01:08 P.M CET]
+---------------------------------
+
+* Fixed a syntax error in the ``TaskSet`` class.  (No such variable
+  ``TimeOutError``).
+
+0.1.13 [2009-05-19 12:36 P.M CET]
+---------------------------------
+
+* Forgot to add ``yadayada`` to install requirements.
+
+* Now deletes all expired task results, not just those marked as done.
+
+* Able to load the Tokyo Tyrant backend class without django
+  configuration, can specify tyrant settings directly in the class
+  constructor.
+
+* Improved API documentation
+
+* Now using the Sphinx documentation system, you can build
+  the html documentation by doing ::
+
+		$ cd docs
+		$ make html
+
+  and the result will be in ``docs/.build/html``.
+
+0.1.12 [2009-05-18 04:38 P.M CET]
+---------------------------------
+
+* ``delay_task()`` etc. now returns ``celery.task.AsyncResult`` object,
+  which lets you check the result and any failure that might have
+  happened.  It kind of works like the ``multiprocessing.AsyncResult``
+  class returned by ``multiprocessing.Pool.map_async``.
+
+* Added dmap() and dmap_async(). This works like the 
+  ``multiprocessing.Pool`` versions except they are tasks
+  distributed to the celery server. Example:
+
+		>>> from celery.task import dmap
+		>>> import operator
+		>>> dmap(operator.add, [[2, 2], [4, 4], [8, 8]])
+		>>> [4, 8, 16]
+        
+		>>> from celery.task import dmap_async
+		>>> import operator
+		>>> result = dmap_async(operator.add, [[2, 2], [4, 4], [8, 8]])
+		>>> result.ready()
+		False
+		>>> time.sleep(1)
+		>>> result.ready()
+		True
+		>>> result.result
+		[4, 8, 16]
+
+* Refactored the task metadata cache and database backends, and added
+  a new backend for Tokyo Tyrant. You can set the backend in your django
+  settings file. e.g::
+
+		CELERY_BACKEND = "database"; # Uses the database
+		CELERY_BACKEND = "cache"; # Uses the django cache framework
+		CELERY_BACKEND = "tyrant"; # Uses Tokyo Tyrant
+		TT_HOST = "localhost"; # Hostname for the Tokyo Tyrant server.
+		TT_PORT = 6657; # Port of the Tokyo Tyrant server.
+
+0.1.11 [2009-05-12 02:08 P.M CET]
+---------------------------------
+
+* The logging system was leaking file descriptors, resulting in
+  servers stopping with the EMFILES (too many open files) error. (fixed)
+
+0.1.10 [2009-05-11 12:46 P.M CET]
+---------------------------------
+
+* Tasks now supports both positional arguments and keyword arguments.
+
+* Requires carrot 0.3.8.
+
+* The daemon now tries to reconnect if the connection is lost.
+
+0.1.8 [2009-05-07 12:27 P.M CET]
+--------------------------------
+
+* Better test coverage
+* More documentation
+* celeryd doesn't emit ``Queue is empty`` message if
+  ``settings.CELERYD_EMPTY_MSG_EMIT_EVERY`` is 0.
+
+0.1.7 [2009-04-30 1:50 P.M CET]
+-------------------------------
+
+* Added some unittests
+
+* Can now use the database for task metadata (like if the task has
+  been executed or not). Set ``settings.CELERY_TASK_META``
+
+* Can now run ``python setup.py test`` to run the unittests from
+  within the ``testproj`` project.
+
+* Can set the AMQP exchange/routing key/queue using
+  ``settings.CELERY_AMQP_EXCHANGE``, ``settings.CELERY_AMQP_ROUTING_KEY``,
+  and ``settings.CELERY_AMQP_CONSUMER_QUEUE``.
+
+0.1.6 [2009-04-28 2:13 P.M CET]
+-------------------------------
+
+* Introducing ``TaskSet``. A set of subtasks is executed and you can
+  find out how many, or if all them, are done (excellent for progress
+  bars and such)
+
+* Now catches all exceptions when running ``Task.__call__``, so the
+  daemon doesn't die. This does't happen for pure functions yet, only
+  ``Task`` classes.
+
+* ``autodiscover()`` now works with zipped eggs.
+
+* celeryd: Now adds curernt working directory to ``sys.path`` for
+  convenience.
+
+* The ``run_every`` attribute of ``PeriodicTask`` classes can now be a
+  ``datetime.timedelta()`` object.
+
+* celeryd: You can now set the ``DJANGO_PROJECT_DIR`` variable
+  for ``celeryd`` and it will add that to ``sys.path`` for easy launching.
+
+* Can now check if a task has been executed or not via HTTP.
+
+* You can do this by including the celery ``urls.py`` into your project,
+
+		>>> url(r'^celery/$', include("celery.urls"))
+
+  then visiting the following url,::
+
+		http://mysite/celery/$task_id/done/
+
+  this will return a JSON dictionary like e.g:
+
+		>>> {"task": {"id": $task_id, "executed": true}}
+
+* ``delay_task`` now returns string id, not ``uuid.UUID`` instance.
+
+* Now has ``PeriodicTasks``, to have ``cron`` like functionality.
+
+* Project changed name from ``crunchy`` to ``celery``. The details of
+  the name change request is in ``docs/name_change_request.txt``.
+
+0.1.0 [2009-04-24 11:28 A.M CET]
+--------------------------------
+
+* Initial release

+ 15 - 0
sources/cookbook/index.txt

@@ -0,0 +1,15 @@
+===========
+ Cookbook
+===========
+
+.. toctree::
+    :maxdepth: 2
+
+    task-retries
+
+This page contains common recipes and techniques.
+Whenever a setting is mentioned, you should use ``celeryconf.py`` if using
+regular Python, or ``settings.py`` if running under Django.
+
+
+

+ 53 - 0
sources/cookbook/task-retries.txt

@@ -0,0 +1,53 @@
+================
+ Retrying Tasks
+================
+
+
+Retrying a task if something fails
+==================================
+
+Simply use :meth:`celery.task.base.Task.retry` to re-sent the task, it will
+do the right thing, and respect the :attr:`celery.task.base.Task.max_retries`
+attribute.
+
+.. code-block:: python
+
+    class SendTwitterStatusTask(Task):
+    
+        def run(self, oauth, tweet, \*\*kwargs):
+            try:
+                twitter = Twitter(oauth)
+                twitter.update_status(tweet)
+            except (Twitter.FailWhaleError, Twitter.LoginError), exc:
+                self.retry(args=[oauth, tweet], kwargs=\*\*kwargs, exc=exc)
+
+Here we used the ``exc`` argument to pass the current exception to
+:meth:`celery.task.base.Task.retry`. At each step of the retry this exception
+is available as the tombstone (result) of the task, when
+:attr:`celery.task.base.Task.max_retries` has been exceeded this is the exception
+raised. However, if an ``exc`` argument is not provided the
+:exc:`celery.task.base.RetryTaskError` exception is raised instead.
+  
+Setting a custom delay for retries.
+===================================
+
+The default countdown is in the tasks
+:attr:`celery.task.base.Task.default_retry_delay` attribute, which by
+default is set to 3 minutes.
+
+You can also provide the ``countdown`` argument to
+:meth:`celery.task.base.Task.retry` to override this default.
+
+.. code-block:: python
+
+    class MyTask(Task):
+        default_retry_delay = 30 * 60 # retry in 30 minutes
+
+        def run(self, x, y, \*\*kwargs):
+            try:
+                ...
+            except Exception, exc:
+                self.retry([x, y], \*\*kwargs, exc=exc,
+                           countdown=60 # override the default and
+                                        # retry in 1 minute
+

+ 321 - 0
sources/faq.txt

@@ -0,0 +1,321 @@
+============================
+ Frequently Asked Questions
+============================
+
+MySQL is throwing deadlock errors, what can I do?
+-------------------------------------------------
+
+**Answer:** MySQL has default isolation level set to ``REPEATABLE-READ``,
+if you don't really need that, set it to ``READ-COMMITTED``.
+You can do that by adding the following to your ``my.cnf``::
+
+    [mysqld]
+    transaction-isolation = READ-COMMITTED
+
+For more information about InnoDBs transaction model see `MySQL - The InnoDB
+Transaction Model and Locking`_ in the MySQL user manual.
+
+(Thanks to Honza Kral and Anton Tsigularov for this solution)
+
+.. _`MySQL - The InnoDB Transaction Model and Locking`: http://dev.mysql.com/doc/refman/5.1/en/innodb-transaction-model.html
+
+celeryd is not doing anything, just hanging
+--------------------------------------------
+
+**Answer:** See `MySQL is throwing deadlock errors, what can I do?`_.
+            or `Why is Task.delay/apply\* just hanging?`.
+
+Why is Task.delay/apply\* just hanging?`
+----------------------------------------
+
+**Answer:** :mod:`amqplib` hangs if it isn't able to authenticate to the
+AMQP server, so make sure you are able to access the configured vhost using
+the user and password.
+
+Why won't celeryd run on FreeBSD?
+---------------------------------
+
+**Answer:** multiprocessing.Pool requires a working POSIX semaphore
+implementation which isn't enabled in FreeBSD by default. You have to enable
+POSIX semaphores in the kernel and manually recompile multiprocessing.
+
+I'm having ``IntegrityError: Duplicate Key`` errors. Why?
+----------------------------------------------------------
+
+**Answer:** See `MySQL is throwing deadlock errors, what can I do?`_.
+Thanks to howsthedotcom.
+
+Why won't my Task run?
+----------------------
+
+**Answer:** Did you register the task in the applications ``tasks.py`` module?
+(or in some other module Django loads by default, like ``models.py``?).
+Also there might be syntax errors preventing the tasks module being imported.
+
+You can find out if the celery daemon is able to run the task by executing the
+task manually:
+
+    >>> from myapp.tasks import MyPeriodicTask
+    >>> MyPeriodicTask.delay()
+
+Watch celery daemons logfile (or output if not running as a daemon), to see
+if it's able to find the task, or if some other error is happening.
+
+Why won't my Periodic Task run?
+-------------------------------
+
+**Answer:** See `Why won't my Task run?`_.
+
+How do I discard all waiting tasks?
+------------------------------------
+
+**Answer:** Use ``celery.task.discard_all()``, like this:
+
+    >>> from celery.task import discard_all
+    >>> discard_all()
+    1753
+
+The number ``1753`` is the number of messages deleted.
+
+You can also start celeryd with the ``--discard`` argument which will
+accomplish the same thing.
+
+I've discarded messages, but there are still messages left in the queue?
+------------------------------------------------------------------------
+
+**Answer:** Tasks are acknowledged (removed from the queue) as soon
+as they are actually executed. After the worker has received a task, it will
+take some time until it is actually executed, especially if there are a lot
+of tasks already waiting for execution. Messages that are not acknowledged are
+hold on to by the worker until it closes the connection to the broker (AMQP
+server). When that connection is closed (e.g because the worker was stopped)
+the tasks will be re-sent by the broker to the next available worker (or the
+same worker when it has been restarted), so to properly purge the queue of
+waiting tasks you have to stop all the workers, and then discard the tasks
+using ``discard_all``.
+
+Can I use celery with ActiveMQ/STOMP?
+-------------------------------------
+
+**Answer**: Yes. But this is somewhat experimental for now.
+It is certainly working ok for me in a test configuration, but it has not
+been tested in production like RabbitMQ. If you have any problems with
+using STOMP and celery, please report the bugs to the issue tracker:
+
+    http://github.com/ask/celery/issues/
+
+First you have to use the ``master`` branch of ``celery``::
+
+    $ git clone git://github.com/ask/celery.git
+    $ cd celery
+    $ sudo python setup.py install
+    $ cd ..
+
+Then you need to install the ``stompbackend`` branch of ``carrot``::
+
+    $ git clone git://github.com/ask/carrot.git
+    $ cd carrot
+    $ git checkout stompbackend
+    $ sudo python setup.py install
+    $ cd ..
+
+And my fork of ``python-stomp`` which adds non-blocking support::
+
+    $ hg clone http://bitbucket.org/asksol/python-stomp/
+    $ cd python-stomp
+    $ sudo python setup.py install
+    $ cd ..
+
+In this example we will use a queue called ``celery`` which we created in
+the ActiveMQ web admin interface.
+
+**Note**: For ActiveMQ the queue name has to have ``"/queue/"`` prepended to
+it. i.e. the queue ``celery`` becomes ``/queue/celery``.
+
+Since a STOMP queue is a single named entity and it doesn't have the
+routing capabilities of AMQP you need to set both the ``queue``, and
+``exchange`` settings to your queue name. This is a minor inconvenience since
+carrot needs to maintain the same interface for both AMQP and STOMP (obviously
+the one with the most capabilities won).
+
+Use the following specific settings in your ``settings.py``:
+
+.. code-block:: python
+
+    # Makes python-stomp the default backend for carrot.
+    CARROT_BACKEND = "stomp"
+
+    # STOMP hostname and port settings.
+    AMQP_HOST = "localhost"
+    AMQP_PORT = 61613
+
+    # The queue name to use (both queue and exchange must be set to the
+    # same queue name when using STOMP)
+    CELERY_AMQP_CONSUMER_QUEUE = "/queue/celery"
+    CELERY_AMQP_EXCHANGE = "/queue/celery" 
+   
+Now you can go on reading the tutorial in the README, ignoring any AMQP
+specific options. 
+
+Which features are not supported when using STOMP?
+--------------------------------------------------
+
+This is a (possible incomplete) list of features not available when
+using the STOMP backend:
+
+    * routing keys
+
+    * exchange types (direct, topic, headers, etc)
+
+    * immediate
+
+    * mandatory
+
+Can I send some tasks to only some servers?
+--------------------------------------------
+
+**Answer:** As of now there is only one use-case that works like this,
+and that is tasks of type ``A`` can be sent to servers ``x`` and ``y``,
+while tasks of type ``B`` can be sent to server ``z``. One server can't
+handle more than one routing_key, but this is coming in a later release.
+
+Say you have two servers, ``x``, and ``y`` that handles regular tasks,
+and one server ``z``, that only handles feed related tasks, you can use this
+configuration:
+
+    * Servers ``x`` and ``y``: settings.py:
+
+    .. code-block:: python
+
+        AMQP_SERVER = "rabbit"
+        AMQP_PORT = 5678
+        AMQP_USER = "myapp"
+        AMQP_PASSWORD = "secret"
+        AMQP_VHOST = "myapp"
+
+        CELERY_AMQP_CONSUMER_QUEUE = "regular_tasks"
+        CELERY_AMQP_EXCHANGE = "tasks"
+        CELERY_AMQP_PUBLISHER_ROUTING_KEY = "task.regular"
+        CELERY_AMQP_CONSUMER_ROUTING_KEY = "task.#"
+        CELERY_AMQP_EXCHANGE_TYPE = "topic"
+
+    * Server ``z``: settings.py:
+
+    .. code-block:: python
+
+        AMQP_SERVER = "rabbit"
+        AMQP_PORT = 5678
+        AMQP_USER = "myapp"
+        AMQP_PASSWORD = "secret"
+        AMQP_VHOST = "myapp"
+        
+        CELERY_AMQP_EXCHANGE = "tasks"
+        CELERY_AMQP_PUBLISHER_ROUTING_KEY = "task.regular"
+        CELERY_AMQP_EXCHANGE_TYPE = "topic"
+        # This is the settings different for this server:
+        CELERY_AMQP_CONSUMER_QUEUE = "feed_tasks"
+        CELERY_AMQP_CONSUMER_ROUTING_KEY = "feed.#"
+
+Now to make a Task run on the ``z`` server you need to set its
+``routing_key`` attribute so it starts with the words ``"task.feed."``:
+
+.. code-block:: python
+
+    from feedaggregator.models import Feed
+    from celery.task import Task
+
+    class FeedImportTask(Task):
+        routing_key = "feed.importer"
+
+        def run(self, feed_url):
+            # something importing the feed
+            Feed.objects.import_feed(feed_url)
+
+
+You can also override this using the ``routing_key`` argument to
+:func:`celery.task.apply_async`:
+
+    >>> from celery.task import apply_async
+    >>> from myapp.tasks import RefreshFeedTask
+    >>> apply_async(RefreshFeedTask, args=["http://cnn.com/rss"],
+    ...             routing_key="feed.importer")
+
+
+Can I use celery without Django?
+--------------------------------
+
+**Answer:** Yes.
+
+Celery uses something called loaders to read/setup configuration, import
+modules that registers tasks and to decide what happens when a task is
+executed. Currently there are two loaders, the default loader and the Django
+loader. If you want to use celery without a Django project, you either have to
+use the default loader, or write a loader of your own.
+
+The rest of this answer describes how to use the default loader.
+
+First of all, installation. You need to get the development version of
+celery from github::
+
+    $ git clone git://github.com/ask/celery.git
+    $ cd celery
+    # python setup.py install # as root
+
+While it is possible to use celery from outside of Django, we still need
+Django itself to run, this is to use the ORM and cache-framework, etc.
+Duplicating these features would be time consuming and mostly pointless, so
+we decided that having a dependency on Django itself was a good thing.
+Install Django using your favorite install tool, ``easy_install``, ``pip``, or
+whatever::
+
+    # easy_install django # as root
+
+You need a configuration file named ``celeryconfig.py``, either in the
+directory you run ``celeryd`` in, or in a Python library path where it is
+able to find it. The configuration file can contain any of the settings
+described in :mod:`celery.conf`, and in additional if you're using the
+database backend you have to configure the database. Here is an example
+configuration using the database backend with MySQL:
+
+.. code-block:: python
+
+    # Broker configuration
+    AMQP_SERVER = "localhost"
+    AMQP_PORT = "5672"
+    AMQP_VHOST = "celery"
+    AMQP_USER = "celery"
+    AMQP_PASSWORD = "celerysecret"
+    CARROT_BACKEND="amqp"
+
+    # Using the database backend.
+    CELERY_BACKEND = "database"
+    DATABASE_ENGINE = "mysql" # see Django docs for a description of these.
+    DATABASE_NAME = "mydb"
+    DATABASE_HOST = "mydb.example.org"
+    DATABASE_USER = "myuser"
+    DATABASE_PASSWORD = "mysecret"
+
+    # Number of processes that processes tasks simultaneously.
+    CELERYD_CONCURRENCY = 8
+
+    # Modules to import when celeryd starts.
+    # This must import every module where you register tasks so celeryd
+    # is able to find and run them.
+    CELERY_IMPORTS = ("mytaskmodule1", "mytaskmodule2")
+    
+Now with this configuration file in the current directory you have to
+run ``celeryinit`` to create the database tables::
+
+    $ celeryinit
+
+Then you should be able to successfully run ``celeryd``::
+
+    $ celeryd --loglevel=INFO
+
+and send a task from a python shell (note that it must be able to import
+``celeryconfig.py``):
+
+    >>> from celery.task.builtins import PingTask
+    >>> result = PingTask.apply_async()
+    >>> result.get()
+    'pong'

+ 29 - 0
sources/index.txt

@@ -0,0 +1,29 @@
+.. Celery documentation master file, created by sphinx-quickstart on Mon May 18 21:37:44 2009.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+=================================
+ Celery - Distributed Task Queue
+=================================
+
+Contents:
+
+.. toctree::
+    :maxdepth: 2
+
+    introduction
+    cookbook/index
+    tutorials/index
+    faq
+    reference/index
+    changelog
+    links
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+

+ 382 - 0
sources/introduction.txt

@@ -0,0 +1,382 @@
+===================================================
+ celery - Distributed Task Queue for Django/Python
+===================================================
+
+:Version: 0.7.0
+
+Introduction
+============
+
+**NOTE:** See the FAQ for information about using celery outside of Django.
+
+``celery`` is a distributed task queue framework for Django/Python.
+
+It is used for executing tasks *asynchronously*, routed to one or more
+worker servers, running concurrently using multiprocessing.
+
+It is designed to solve certain problems related to running websites
+demanding high-availability and performance.
+
+It is perfect for filling caches, posting updates to twitter, mass
+downloading data like syndication feeds or web scraping. Use-cases are
+plentiful. Implementing these features asynchronously using ``celery`` is
+easy and fun, and the performance improvements can make it more than
+worthwhile.
+
+Overview
+========
+
+This is a high level overview of the architecture.
+
+.. image:: http://cloud.github.com/downloads/ask/celery/Celery-Overview-v4.jpg
+
+The broker is an AMQP server pushing tasks to the worker servers.
+A worker server is a networked machine running ``celeryd``. This can be one or
+more machines, depending on the workload. See `A look inside the worker`_ to
+see how the worker server works.
+
+The result of the task can be stored for later retrieval (called its
+"tombstone").
+
+Features
+========
+
+    * Uses AMQP messaging (RabbitMQ, ZeroMQ, Qpid) to route tasks to the
+      worker servers. Experimental support for STOMP (ActiveMQ) is also 
+      available.
+
+    * You can run as many worker servers as you want, and still
+      be *guaranteed that the task is only executed once.*
+
+    * Tasks are executed *concurrently* using the Python 2.6
+      ``multiprocessing`` module (also available as a back-port
+      to older python versions)
+
+    * Supports *periodic tasks*, which makes it a (better) replacement
+      for cronjobs.
+
+    * When a task has been executed, the return value can be stored using
+      either a MySQL/Oracle/PostgreSQL/SQLite database, Memcached,
+      or Tokyo Tyrant back-end. For high-performance you can also use
+      AMQP to publish results.
+
+    * If the task raises an exception, the exception instance is stored,
+      instead of the return value.
+
+    * All tasks has a Universally Unique Identifier (UUID), which is the
+      task id, used for querying task status and return values.
+
+    * Tasks can be retried if they fail, with a configurable maximum number
+      of retries.
+
+    * Tasks can be configured to run at a specific time and date in the
+      future (ETA) or you can set a countdown in seconds for when the
+      task should be executed.
+
+    * Supports *task-sets*, which is a task consisting of several sub-tasks.
+      You can find out how many, or if all of the sub-tasks has been executed.
+      Excellent for progress-bar like functionality.
+
+    * Has a ``map`` like function that uses tasks, called ``dmap``.
+
+    * However, you rarely want to wait for these results in a web-environment.
+      You'd rather want to use Ajax to poll the task status, which is
+      available from a URL like ``celery/<task_id>/status/``. This view
+      returns a JSON-serialized data structure containing the task status,
+      and the return value if completed, or exception on failure.
+
+    * The worker can collect statistics, like, how many tasks has been
+      executed by type, and the time it took to process them. Very useful
+      for monitoring and profiling.
+
+    * Pool workers are supervised, so if for some reason a worker crashes
+        it is automatically replaced by a new worker.
+
+    * Can be configured to send e-mails to the administrators when a task
+      fails.
+
+API Reference Documentation
+===========================
+
+The `API Reference`_ is hosted at Github
+(http://ask.github.com/celery)
+
+.. _`API Reference`: http://ask.github.com/celery/
+
+Installation
+=============
+
+You can install ``celery`` either via the Python Package Index (PyPI)
+or from source.
+
+To install using ``pip``,::
+
+    $ pip install celery
+
+To install using ``easy_install``,::
+
+    $ easy_install celery
+
+Downloading and installing from source
+--------------------------------------
+
+Download the latest version of ``celery`` from
+http://pypi.python.org/pypi/celery/
+
+You can install it by doing the following,::
+
+    $ tar xvfz celery-0.0.0.tar.gz
+    $ cd celery-0.0.0
+    $ python setup.py build
+    # python setup.py install # as root
+
+Using the development version
+------------------------------
+
+You can clone the repository by doing the following::
+
+    $ git clone git://github.com/ask/celery.git
+
+
+Usage
+=====
+
+Installing RabbitMQ
+-------------------
+
+See `Installing RabbitMQ`_ over at RabbitMQ's website. For Mac OS X
+see `Installing RabbitMQ on OS X`_.
+
+.. _`Installing RabbitMQ`: http://www.rabbitmq.com/install.html
+.. _`Installing RabbitMQ on OS X`:
+    http://playtype.net/past/2008/10/9/installing_rabbitmq_on_osx/
+
+
+Setting up RabbitMQ
+-------------------
+
+To use celery we need to create a RabbitMQ user, a virtual host and
+allow that user access to that virtual host::
+
+    $ rabbitmqctl add_user myuser mypassword
+
+    $ rabbitmqctl add_vhost myvhost
+
+From RabbitMQ version 1.6.0 and onward you have to use the new ACL features
+to allow access::
+
+    $ rabbitmqctl set_permissions -p myvhost myuser "" ".*" ".*"
+
+See the RabbitMQ `Admin Guide`_ for more information about `access control`_.
+
+.. _`Admin Guide`: http://www.rabbitmq.com/admin-guide.html
+
+.. _`access control`: http://www.rabbitmq.com/admin-guide.html#access-control
+
+
+If you are still using version 1.5.0 or below, please use ``map_user_vhost``::
+
+    $ rabbitmqctl map_user_vhost myuser myvhost
+
+
+Configuring your Django project to use Celery
+---------------------------------------------
+
+You only need three simple steps to use celery with your Django project.
+
+    1. Add ``celery`` to ``INSTALLED_APPS``.
+
+    2. Create the celery database tables::
+
+            $ python manage.py syncdb
+
+    3. Configure celery to use the AMQP user and virtual host we created
+        before, by adding the following to your ``settings.py``::
+
+            AMQP_SERVER = "localhost"
+            AMQP_PORT = 5672
+            AMQP_USER = "myuser"
+            AMQP_PASSWORD = "mypassword"
+            AMQP_VHOST = "myvhost"
+
+
+That's it.
+
+There are more options available, like how many processes you want to process
+work in parallel (the ``CELERY_CONCURRENCY`` setting), and the backend used
+for storing task statuses. But for now, this should do. For all of the options
+available, please consult the `API Reference`_
+
+**Note**: If you're using SQLite as the Django database back-end,
+``celeryd`` will only be able to process one task at a time, this is
+because SQLite doesn't allow concurrent writes.
+
+Running the celery worker server
+--------------------------------
+
+To test this we'll be running the worker server in the foreground, so we can
+see what's going on without consulting the logfile::
+
+    $ python manage.py celeryd
+
+
+However, in production you probably want to run the worker in the
+background, as a daemon:: 
+
+    $ python manage.py celeryd --detach
+
+
+For a complete listing of the command line arguments available, with a short
+description, you can use the help command::
+
+    $ python manage.py help celeryd
+
+
+Defining and executing tasks
+----------------------------
+
+**Please note** All of these tasks has to be stored in a real module, they can't
+be defined in the python shell or ipython/bpython. This is because the celery
+worker server needs access to the task function to be able to run it.
+So while it looks like we use the python shell to define the tasks in these
+examples, you can't do it this way. Put them in the ``tasks`` module of your
+Django application. The worker server will automatically load any ``tasks.py``
+file for all of the applications listed in ``settings.INSTALLED_APPS``.
+Executing tasks using ``delay`` and ``apply_async`` can be done from the
+python shell, but keep in mind that since arguments are pickled, you can't
+use custom classes defined in the shell session.
+
+While you can use regular functions, the recommended way is to define
+a task class. This way you can cleanly upgrade the task to use the more
+advanced features of celery later.
+
+This is a task that basically does nothing but take some arguments,
+and return a value:
+
+    >>> from celery.task import Task
+    >>> from celery.registry import tasks
+    >>> class MyTask(Task):
+    ...     def run(self, some_arg, **kwargs):
+    ...         logger = self.get_logger(**kwargs)
+    ...         logger.info("Did something: %s" % some_arg)
+    ...         return 42
+    >>> tasks.register(MyTask)
+
+Now if we want to execute this task, we can use the ``delay`` method of the
+task class (this is a handy shortcut to the ``apply_async`` method which gives
+you greater control of the task execution).
+
+    >>> from myapp.tasks import MyTask
+    >>> MyTask.delay(some_arg="foo")
+
+At this point, the task has been sent to the message broker. The message
+broker will hold on to the task until a celery worker server has successfully
+picked it up.
+
+*Note* If everything is just hanging when you execute ``delay``, please check
+that RabbitMQ is running, and that the user/password has access to the virtual
+host you configured earlier.
+
+Right now we have to check the celery worker logfiles to know what happened with
+the task. This is because we didn't keep the ``AsyncResult`` object returned
+by ``delay``.
+
+The ``AsyncResult`` lets us find the state of the task, wait for the task to
+finish and get its return value (or exception if the task failed).
+
+So, let's execute the task again, but this time we'll keep track of the task:
+
+    >>> result = MyTask.delay("do_something", some_arg="foo bar baz")
+    >>> result.ready() # returns True if the task has finished processing.
+    False
+    >>> result.result # task is not ready, so no return value yet.
+    None
+    >>> result.get()   # Waits until the task is done and return the retval.
+    42
+    >>> result.result
+    42
+    >>> result.successful() # returns True if the task didn't end in failure.
+    True
+
+
+If the task raises an exception, the ``result.success()`` will be ``False``,
+and ``result.result`` will contain the exception instance raised.
+
+Auto-discovery of tasks
+-----------------------
+
+``celery`` has an auto-discovery feature like the Django Admin, that
+automatically loads any ``tasks.py`` module in the applications listed
+in ``settings.INSTALLED_APPS``. This autodiscovery is used by the celery
+worker to find registered tasks for your Django project.
+
+Periodic Tasks
+---------------
+
+Periodic tasks are tasks that are run every ``n`` seconds. 
+Here's an example of a periodic task:
+
+    >>> from celery.task import PeriodicTask
+    >>> from celery.registry import tasks
+    >>> from datetime import timedelta
+    >>> class MyPeriodicTask(PeriodicTask):
+    ...     run_every = timedelta(seconds=30)
+    ...
+    ...     def run(self, **kwargs):
+    ...         logger = self.get_logger(**kwargs)
+    ...         logger.info("Running periodic task!")
+    ...
+    >>> tasks.register(MyPeriodicTask)
+
+**Note:** Periodic tasks does not support arguments, as this doesn't
+really make sense.
+
+
+A look inside the worker
+========================
+
+.. image:: http://cloud.github.com/downloads/ask/celery/InsideTheWorker-v2.jpg
+
+Getting Help
+============
+
+Mailing list
+------------
+
+For discussions about the usage, development, and future of celery,
+please join the `celery-users`_ mailing list. 
+
+.. _`celery-users`: http://groups.google.com/group/celery-users/
+
+IRC
+---
+
+Come chat with us on IRC. The `#celery`_ channel is located at the `Freenode`_
+network.
+
+.. _`#celery`: irc://irc.freenode.net/celery
+.. _`Freenode`: http://freenode.net
+
+
+Bug tracker
+===========
+
+If you have any suggestions, bug reports or annoyances please report them
+to our issue tracker at http://github.com/ask/celery/issues/
+
+Contributing
+============
+
+Development of ``celery`` happens at Github: http://github.com/ask/celery
+
+You are highly encouraged to participate in the development
+of ``celery``. If you don't like Github (for some reason) you're welcome
+to send regular patches.
+
+License
+=======
+
+This software is licensed under the ``New BSD License``. See the ``LICENSE``
+file in the top distribution directory for the full license text.
+
+.. # vim: syntax=rst expandtab tabstop=4 shiftwidth=4 shiftround

+ 55 - 0
sources/links.txt

@@ -0,0 +1,55 @@
+===================
+ Interesting Links
+===================
+
+
+celery
+------
+
+* IRC logs from ``#celery`` (Freenode):
+    http://botland.oebfare.com/logger/celery/
+
+AMQP
+----
+
+* `Shovel`_: An AMQP Relay
+
+.. _`Shovel`: http://botland.oebfare.com/logger/celery/
+
+RabbitMQ
+--------
+
+* `Trixx`_: Administration and Monitoring tool for `RabbitMQ`_ (in
+    development).
+
+* `Cony`_: HTTP based service for providing insight into running
+    `RabbitMQ`_ processes.
+
+* `RabbitMQ Munin Plug-ins`_: Use `Munin`_ to monitor `RabbitMQ`_, and alert
+    on critical events.
+
+.. _`Trixx`: http://github.com/aaronfeng/trixx/tree/master
+.. _`Cony`: http://github.com/gmr/Cony/tree/master
+.. _`RabbitMQ`: http://rabbitmq.com/
+.. _`RabbitMQ Munin Plug-ins`: http://github.com/ask/rabbitmq-munin/
+.. _`Munin`: http://munin.projects.linpro.no/
+
+Non-relational databases
+------------------------
+
+* `CouchDB`_: Document database.
+
+* `Cassandra`_: Distributed and structured key-value store.
+
+* `Disco`_: `Map/Reduce`_ framework.
+
+* `Tokyo Cabinet`_/`Tokyo Tyrant`_: Modern and fast (networked) DBM-
+    implementation.
+
+.. _`CouchDB`: http://couchdb.org
+.. _`Cassandra`: http://incubator.apache.org/cassandra/
+.. _`Disco`: http://discoproject.org
+.. _`Map/Reduce`: http://en.wikipedia.org/wiki/MapReduce
+.. _`Tokyo Cabinet`: http://tokyocabinet.sourceforge.net/
+.. _`Tokyo Tyrant`: http://tokyocabinet.sourceforge.net/tyrantdoc/
+

+ 8 - 0
sources/reference/celery.backends.amqp.txt

@@ -0,0 +1,8 @@
+=======================================
+Backend: AMQP - celery.backends.amqp
+=======================================
+
+.. currentmodule:: celery.backends.amqp
+
+.. automodule:: celery.backends.amqp
+    :members:

+ 10 - 0
sources/reference/celery.backends.base.txt

@@ -0,0 +1,10 @@
+=====================================
+Backend: Base - celery.backends.base
+=====================================
+
+.. currentmodule:: celery.backends.base
+
+.. automodule:: celery.backends.base
+    :members:
+
+

+ 8 - 0
sources/reference/celery.backends.cache.txt

@@ -0,0 +1,8 @@
+=======================================
+Backend: Cache - celery.backends.cache
+=======================================
+
+.. currentmodule:: celery.backends.cache
+
+.. automodule:: celery.backends.cache
+    :members:

+ 8 - 0
sources/reference/celery.backends.database.txt

@@ -0,0 +1,8 @@
+=============================================
+Backend: Database - celery.backends.database
+=============================================
+
+.. currentmodule:: celery.backends.database
+
+.. automodule:: celery.backends.database
+    :members:

+ 8 - 0
sources/reference/celery.backends.txt

@@ -0,0 +1,8 @@
+===========================
+Backends - celery.backends
+===========================
+
+.. currentmodule:: celery.backends
+
+.. automodule:: celery.backends
+    :members:

+ 8 - 0
sources/reference/celery.backends.tyrant.txt

@@ -0,0 +1,8 @@
+===============================================
+Backend: Tokyo Tyrant - celery.backends.tyrant
+===============================================
+
+.. currentmodule:: celery.backends.tyrant
+
+.. automodule:: celery.backends.tyrant
+    :members:

+ 8 - 0
sources/reference/celery.bin.celeryd.txt

@@ -0,0 +1,8 @@
+==========================================
+Celery Worker Daemon - celery.bin.celeryd
+==========================================
+
+.. currentmodule:: celery.bin.celeryd
+
+.. automodule:: celery.bin.celeryd
+    :members:

+ 8 - 0
sources/reference/celery.bin.celeryinit.txt

@@ -0,0 +1,8 @@
+===========================================
+ Celery Initialize - celery.bin.celeryinit
+===========================================
+
+.. currentmodule:: celery.bin.celeryinit
+
+.. automodule:: celery.bin.celeryinit
+    :members:

+ 8 - 0
sources/reference/celery.conf.txt

@@ -0,0 +1,8 @@
+============================
+Configuration - celery.conf
+============================
+
+.. currentmodule:: celery.conf
+
+.. automodule:: celery.conf
+    :members:

+ 8 - 0
sources/reference/celery.datastructures.txt

@@ -0,0 +1,8 @@
+=======================================
+Datastructures - celery.datastructures
+=======================================
+
+.. currentmodule:: celery.datastructures
+
+.. automodule:: celery.datastructures
+    :members:

+ 8 - 0
sources/reference/celery.discovery.txt

@@ -0,0 +1,8 @@
+==================================
+Task Discovery - celery.discovery
+==================================
+
+.. currentmodule:: celery.discovery
+
+.. automodule:: celery.discovery
+    :members:

+ 8 - 0
sources/reference/celery.exceptions.txt

@@ -0,0 +1,8 @@
+================================
+ Exceptions - celery.exceptions
+================================
+
+.. currentmodule:: celery.exceptions
+
+.. automodule:: celery.exceptions
+    :members:

+ 8 - 0
sources/reference/celery.execute.txt

@@ -0,0 +1,8 @@
+==================================
+ Executing Tasks - celery.execute
+==================================
+
+.. currentmodule:: celery.execute
+
+.. automodule:: celery.execute
+    :members:

+ 8 - 0
sources/reference/celery.fields.txt

@@ -0,0 +1,8 @@
+===============================
+ Django Fields - celery.fields
+===============================
+
+.. currentmodule:: celery.fields
+
+.. automodule:: celery.fields
+    :members:

+ 8 - 0
sources/reference/celery.loaders.base.txt

@@ -0,0 +1,8 @@
+===========================================
+ Loader Base Classes - celery.loaders.base
+===========================================
+
+.. currentmodule:: celery.loaders.base
+
+.. automodule:: celery.loaders.base
+    :members:

+ 8 - 0
sources/reference/celery.loaders.default.txt

@@ -0,0 +1,8 @@
+=========================================
+ Default Loader - celery.loaders.default
+=========================================
+
+.. currentmodule:: celery.loaders.default
+
+.. automodule:: celery.loaders.default
+    :members:

+ 8 - 0
sources/reference/celery.loaders.djangoapp.txt

@@ -0,0 +1,8 @@
+==========================================
+ Django Loader - celery.loaders.djangoapp
+==========================================
+
+.. currentmodule:: celery.loaders.djangoapp
+
+.. automodule:: celery.loaders.djangoapp
+    :members:

+ 8 - 0
sources/reference/celery.loaders.txt

@@ -0,0 +1,8 @@
+============================================
+ Loaders - celery.loaders
+============================================
+
+.. currentmodule:: celery.loaders
+
+.. automodule:: celery.loaders
+    :members:

+ 8 - 0
sources/reference/celery.log.txt

@@ -0,0 +1,8 @@
+==========================
+Logging - celery.log
+==========================
+
+.. currentmodule:: celery.log
+
+.. automodule:: celery.log
+    :members:

+ 8 - 0
sources/reference/celery.managers.txt

@@ -0,0 +1,8 @@
+========================================
+Django Model Managers - celery.managers
+========================================
+
+.. currentmodule:: celery.managers
+
+.. automodule:: celery.managers
+    :members:

+ 8 - 0
sources/reference/celery.messaging.txt

@@ -0,0 +1,8 @@
+==============================
+Messaging - celery.messaging
+==============================
+
+.. currentmodule:: celery.messaging
+
+.. automodule:: celery.messaging
+    :members:

+ 76 - 0
sources/reference/celery.models.txt

@@ -0,0 +1,76 @@
+===============================
+Django Models - celery.models
+===============================
+
+.. data:: TASK_STATUS_PENDING
+
+    The string status of a pending task.
+
+.. data:: TASK_STATUS_RETRY
+   
+    The string status of a task which is to be retried.
+
+.. data:: TASK_STATUS_FAILURE
+   
+    The string status of a failed task.
+
+.. data:: TASK_STATUS_DONE
+   
+    The string status of a task that was successfully executed.
+
+.. data:: TASK_STATUSES
+   
+    List of possible task statuses.
+
+.. data:: TASK_STATUSES_CHOICES
+   
+    Django choice tuple of possible task statuses, for usage in model/form
+    fields ``choices`` argument.
+
+.. class:: TaskMeta
+   
+    Model for storing the result and status of a task.
+    
+    *Note* Only used if you're running the ``database`` backend.
+
+    .. attribute:: task_id
+
+        The unique task id.
+
+    .. attribute:: status
+
+        The current status for this task.
+
+    .. attribute:: result
+        
+        The result after successful/failed execution. If the task failed,
+        this contains the execption it raised.
+
+    .. attribute:: date_done
+
+        The date this task changed status.
+
+.. class:: PeriodicTaskMeta
+   
+    Metadata model for periodic tasks.
+
+    .. attribute:: name
+       
+        The name of this task, as registered in the task registry.
+
+    .. attribute:: last_run_at
+
+        The date this periodic task was last run. Used to find out
+        when it should be run next.
+
+    .. attribute:: total_run_count
+       
+        The number of times this periodic task has been run.
+
+    .. attribute:: task
+       
+        The class/function for this task.
+
+    .. method:: delay()
+        Delay the execution of a periodic task, and increment its total
+        run count.

+ 8 - 0
sources/reference/celery.monitoring.txt

@@ -0,0 +1,8 @@
+===============================================
+ Statistics and Monitoring - celery.monitoring
+===============================================
+
+.. currentmodule:: celery.monitoring
+
+.. automodule:: celery.monitoring
+    :members:

+ 10 - 0
sources/reference/celery.platform.txt

@@ -0,0 +1,10 @@
+====================================
+Platform Specific - celery.platform
+====================================
+
+.. currentmodule:: celery.platform
+
+.. automodule:: celery.platform
+    :members:
+
+

+ 8 - 0
sources/reference/celery.pool.txt

@@ -0,0 +1,8 @@
+=============================
+Task Pool - celery.pool
+=============================
+
+.. currentmodule:: celery.pool
+
+.. automodule:: celery.pool
+    :members:

+ 8 - 0
sources/reference/celery.registry.txt

@@ -0,0 +1,8 @@
+================================
+Task Registry - celery.registry
+================================
+
+.. currentmodule:: celery.registry
+
+.. automodule:: celery.registry
+    :members:

+ 8 - 0
sources/reference/celery.result.txt

@@ -0,0 +1,8 @@
+=============================
+Task Result - celery.result
+=============================
+
+.. currentmodule:: celery.result
+
+.. automodule:: celery.result
+    :members:

+ 8 - 0
sources/reference/celery.signals.txt

@@ -0,0 +1,8 @@
+========================================
+Signals - celery.signals
+========================================
+
+.. currentmodule:: celery.signals
+
+.. automodule:: celery.signals
+    :members:

+ 8 - 0
sources/reference/celery.supervisor.txt

@@ -0,0 +1,8 @@
+========================================
+ Process Supervisor - celery.supervisor
+========================================
+
+.. currentmodule:: celery.supervisor
+
+.. automodule:: celery.supervisor
+    :members:

+ 8 - 0
sources/reference/celery.task.base.txt

@@ -0,0 +1,8 @@
+===================================
+ Defining Tasks - celery.task.base
+===================================
+
+.. currentmodule:: celery.task.base
+
+.. automodule:: celery.task.base
+    :members:

+ 8 - 0
sources/reference/celery.task.builtins.txt

@@ -0,0 +1,8 @@
+==============================================
+ Built-in Task Classes - celery.task.builtins
+==============================================
+
+.. currentmodule:: celery.task.builtins
+
+.. automodule:: celery.task.builtins
+    :members:

+ 8 - 0
sources/reference/celery.task.strategy.txt

@@ -0,0 +1,8 @@
+===============================================
+ Common Task Strategies - celery.task.strategy
+===============================================
+
+.. currentmodule:: celery.task.strategy
+
+.. automodule:: celery.task.strategy
+    :members:

+ 8 - 0
sources/reference/celery.task.txt

@@ -0,0 +1,8 @@
+==============================================
+ Task Information and Utilities - celery.task
+==============================================
+
+.. currentmodule:: celery.task
+
+.. automodule:: celery.task
+    :members:

+ 8 - 0
sources/reference/celery.timer.txt

@@ -0,0 +1,8 @@
+======================
+Timers - celery.timer
+======================
+
+.. currentmodule:: celery.timer
+
+.. automodule:: celery.timer
+    :members:

+ 8 - 0
sources/reference/celery.utils.txt

@@ -0,0 +1,8 @@
+========================================
+Multiprocessing Worker - celery.worker
+========================================
+
+.. currentmodule:: celery.utils
+
+.. automodule:: celery.utils
+    :members:

+ 8 - 0
sources/reference/celery.views.txt

@@ -0,0 +1,8 @@
+========================================
+Django Views - celery.views
+========================================
+
+.. currentmodule:: celery.views
+
+.. automodule:: celery.views
+    :members:

+ 8 - 0
sources/reference/celery.worker.controllers.txt

@@ -0,0 +1,8 @@
+=======================================================
+ Worker Controller Threads - celery.worker.controllers
+=======================================================
+
+.. currentmodule:: celery.worker.controllers
+
+.. automodule:: celery.worker.controllers
+    :members:

+ 8 - 0
sources/reference/celery.worker.job.txt

@@ -0,0 +1,8 @@
+=====================================
+ Executable Jobs - celery.worker.job
+=====================================
+
+.. currentmodule:: celery.worker.job
+
+.. automodule:: celery.worker.job
+    :members:

+ 8 - 0
sources/reference/celery.worker.txt

@@ -0,0 +1,8 @@
+========================================
+Multiprocessing Worker - celery.worker
+========================================
+
+.. currentmodule:: celery.worker
+
+.. automodule:: celery.worker
+    :members:

+ 47 - 0
sources/reference/index.txt

@@ -0,0 +1,47 @@
+===========================
+ Module API Reference
+===========================
+
+:Release: |version|
+:Date: |today|
+
+.. toctree::
+    :maxdepth: 2
+
+    celery.task.base
+    celery.execute 
+    celery.result
+    celery.task
+    celery.registry
+    celery.signals
+    celery.exceptions
+    celery.task.builtins
+    celery.task.strategy
+    celery.loaders
+    celery.loaders.base
+    celery.loaders.default
+    celery.loaders.djangoapp
+    celery.discovery
+    celery.monitoring
+    celery.messaging
+    celery.worker
+    celery.worker.job
+    celery.worker.controllers
+    celery.pool
+    celery.supervisor
+    celery.backends
+    celery.backends.base
+    celery.backends.database
+    celery.backends.cache
+    celery.backends.amqp
+    celery.backends.tyrant
+    celery.conf
+    celery.datastructures
+    celery.log
+    celery.utils
+    celery.views
+    celery.managers
+    celery.models
+    celery.fields
+    celery.bin.celeryd
+    celery.bin.celeryinit

+ 238 - 0
sources/tutorials/clickcounter.txt

@@ -0,0 +1,238 @@
+============================================================
+ Tutorial: Creating a click counter using carrot and celery
+============================================================
+
+Introduction
+============
+
+A click counter should be easy, right? Just a simple view that increments
+a click in the DB and forwards you to the real destination.
+
+This would work well for most sites, but when traffic starts to increase,
+you are likely to bump into problems. One database write for every click is
+not good if you have millions of clicks a day.
+
+So what can you do? In this tutorial we will send the individual clicks as
+messages using ``carrot``, and then process them later with a ``celery``
+periodic task.
+
+Celery and carrot is excellent in tandem, and while this might not be
+the perfect example, you'll at least see one example how of they can be used
+to solve a task.
+
+The model
+=========
+
+The model is simple, ``Click`` has the URL as primary key and a number of
+clicks for that URL. Its manager, ``ClickManager`` implements the
+``increment_clicks`` method, which takes a URL and by how much to increment
+its count by.
+
+
+*clickmuncher/models.py*:
+
+.. code-block:: python
+
+    from django.db import models
+    from django.utils.translation import ugettext_lazy as _
+
+
+    class ClickManager(models.Manager):
+
+        def increment_clicks(self, for_url, increment_by=1):
+            """Increment the click count for an URL.
+
+                >>> Click.objects.increment_clicks("http://google.com", 10)
+
+            """
+            click, created = self.get_or_create(url=for_url,
+                                    defaults={"click_count": increment_by})
+            if not created:
+                click.click_count += increment_by
+                click.save()
+
+            return click.click_count
+
+
+    class Click(models.Model):
+        url = models.URLField(_(u"URL"), verify_exists=False, unique=True)
+        click_count = models.PositiveIntegerField(_(u"click_count"),
+                                                  default=0)
+
+        objects = ClickManager()
+
+        class Meta:
+            verbose_name = _(u"URL clicks")
+            verbose_name_plural = _(u"URL clicks")
+
+Using carrot to send clicks as messages
+========================================
+
+The model is normal django stuff, nothing new there. But now we get on to
+the messaging. It has been a tradition for me to put the projects messaging
+related code in its own ``messaging.py`` module, and I will continue to do so
+here so maybe you can adopt this practice. In this module we have two
+functions:
+
+* ``send_increment_clicks``
+
+  This function sends a simple message to the broker. The message body only
+  contains the URL we want to increment as plain-text, so the exchange and
+  routing key play a role here. We use an exchange called ``clicks``, with a
+  routing key of ``increment_click``, so any consumer binding a queue to
+  this exchange using this routing key will receive these messages.
+
+* ``process_clicks``
+
+  This function processes all currently gathered clicks sent using
+  ``send_increment_clicks``. Instead of issuing one database query for every
+  click it processes all of the messages first, calculates the new click count
+  and issues one update per URL. A message that has been received will not be
+  deleted from the broker until it has been acknowledged by the receiver, so
+  if the reciever dies in the middle of processing the message, it will be
+  re-sent at a later point in time. This guarantees delivery and we respect
+  this feature here by not acknowledging the message until the clicks has
+  actually been written to disk.
+  
+  **Note**: This could probably be optimized further with
+  some hand-written SQL, but it will do for now. Let's say it's an excersise
+  left for the picky reader, albeit a discouraged one if you can survive
+  without doing it.
+
+On to the code...
+
+*clickmuncher/messaging.py*:
+
+.. code-block:: python
+
+    from carrot.connection import DjangoBrokerConnection
+    from carrot.messaging import Publisher, Consumer
+    from clickmuncher.models import Click
+
+
+    def send_increment_clicks(for_url):
+        """Send a message for incrementing the click count for an URL."""
+        connection = DjangoBrokerConnection()
+        publisher = Publisher(connection=connection,
+                              exchange="clicks",
+                              routing_key="increment_click",
+                              exchange_type="direct")
+
+        publisher.send(for_url)
+
+        publisher.close()
+        connection.close()
+
+
+    def process_clicks():
+        """Process all currently gathered clicks by saving them to the
+        database."""
+        connection = DjangoBrokerConnection()
+        consumer = Consumer(connection=connection,
+                            queue="clicks",
+                            exchange="clicks",
+                            routing_key="increment_click",
+                            exchange_type="direct")
+
+        # First process the messages: save the number of clicks
+        # for every URL.
+        clicks_for_url = {}
+        messages_for_url = {}
+        for message in consumer.iterqueue():
+            url = message.body
+            clicks_for_url[url] = clicks_for_url.get(url, 0) + 1
+            # We also need to keep the message objects so we can ack the
+            # messages as processed when we are finished with them.
+            if url in messages_for_url:
+                messages_for_url[url].append(message)
+            else:
+                messages_for_url[url] = [message]
+    
+        # Then increment the clicks in the database so we only need
+        # one UPDATE/INSERT for each URL.
+        for url, click_count in clicks_for_urls.items():
+            Click.objects.increment_clicks(url, click_count)
+            # Now that the clicks has been registered for this URL we can
+            # acknowledge the messages
+            [message.ack() for message in messages_for_url[url]]
+        
+        consumer.close()
+        connection.close()
+
+
+View and URLs
+=============
+
+This is also simple stuff, don't think I have to explain this code to you.
+The interface is as follows, if you have a link to http://google.com you
+would want to count the clicks for, you replace the URL with:
+
+    http://mysite/clickmuncher/count/?u=http://google.com
+
+and the ``count`` view will send off an increment message and forward you to
+that site.
+
+*clickmuncher/views.py*:
+
+.. code-block:: python
+
+    from django.http import HttpResponseRedirect
+    from clickmuncher.messaging import send_increment_clicks
+
+
+    def count(request):
+        url = request.GET["u"]
+        send_increment_clicks(url)
+        return HttpResponseRedirect(url)
+
+
+*clickmuncher/urls.py*:
+
+.. code-block:: python
+
+    from django.conf.urls.defaults import patterns, url
+    from clickmuncher import views
+
+    urlpatterns = patterns("",
+        url(r'^$', views.count, name="clickmuncher-count"),
+    )
+
+
+Creating the periodic task
+==========================
+
+Processing the clicks every 30 minutes is easy using celery periodic tasks.
+
+*clickmuncher/tasks.py*:
+
+.. code-block:: python
+
+    from celery.task import PeriodicTask
+    from celery.registry import tasks
+    from clickmuncher.messaging import process_clicks
+    from datetime import timedelta
+
+
+    class ProcessClicksTask(PeriodicTask):
+        run_every = timedelta(minutes=30)
+    
+        def run(self, \*\*kwargs):
+            process_clicks()
+    tasks.register(ProcessClicksTask)
+
+We subclass from :class:`celery.task.base.PeriodicTask`, set the ``run_every``
+attribute and in the body of the task just call the ``process_clicks``
+function we wrote earlier. Finally, we register the task in the task registry
+so the celery workers is able to recognize and find it.
+
+
+Finishing
+=========
+
+There are still ways to improve this application. The URLs could be cleaned
+so the url http://google.com and http://google.com/ is the same. Maybe it's
+even possible to update the click count using a single UPDATE query?
+
+If you have any questions regarding this tutorial, please send a mail to the
+mailing-list or come join us in the #celery IRC channel at Freenode:
+http://celeryq.org/introduction.html#getting-help

Некоторые файлы не были показаны из-за большого количества измененных файлов