Browse Source

Autogenerated documentation for github.

Ask Solem 16 years ago
parent
commit
3e6d26ed73

+ 13 - 19
faq.html

@@ -50,10 +50,8 @@
             
             
   <div class="section" id="frequently-asked-questions">
   <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>
 <h1>Frequently Asked Questions<a class="headerlink" href="#frequently-asked-questions" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="questions">
-<h2>Questions<a class="headerlink" href="#questions" title="Permalink to this headline">¶</a></h2>
 <div class="section" id="mysql-is-throwing-deadlock-errors-what-can-i-do">
 <div class="section" id="mysql-is-throwing-deadlock-errors-what-can-i-do">
-<h3>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></h3>
+<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>,
 <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>.
 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>
 You can do that by adding the following to your <tt class="docutils literal"><span class="pre">my.cnf</span></tt>:</p>
@@ -66,31 +64,31 @@ Transaction Model and Locking</a> in the MySQL user manual.</p>
 <p>(Thanks to Honza Kral and Anton Tsigularov for this solution)</p>
 <p>(Thanks to Honza Kral and Anton Tsigularov for this solution)</p>
 </div>
 </div>
 <div class="section" id="celeryd-is-not-doing-anything-just-hanging">
 <div class="section" id="celeryd-is-not-doing-anything-just-hanging">
-<h3>celeryd is not doing anything, just hanging<a class="headerlink" href="#celeryd-is-not-doing-anything-just-hanging" title="Permalink to this headline">¶</a></h3>
+<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">
 <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>
 <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>
 <dd>or <cite>Why is Task.delay/apply* just hanging?</cite>.</dd>
 </dl>
 </dl>
 </div>
 </div>
 <div class="section" id="why-is-task-delay-apply-just-hanging">
 <div class="section" id="why-is-task-delay-apply-just-hanging">
-<h3>Why is Task.delay/apply* just hanging?`<a class="headerlink" href="#why-is-task-delay-apply-just-hanging" title="Permalink to this headline">¶</a></h3>
+<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
 <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
 AMQP server, so make sure you are able to access the configured vhost using
 the user and password.</p>
 the user and password.</p>
 </div>
 </div>
 <div class="section" id="why-won-t-celeryd-run-on-freebsd">
 <div class="section" id="why-won-t-celeryd-run-on-freebsd">
-<h3>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></h3>
+<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
 <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
 implementation which isn&#8217;t enabled in FreeBSD by default. You have to enable
 POSIX semaphores in the kernel and manually recompile multiprocessing.</p>
 POSIX semaphores in the kernel and manually recompile multiprocessing.</p>
 </div>
 </div>
 <div class="section" id="i-m-having-integrityerror-duplicate-key-errors-why">
 <div class="section" id="i-m-having-integrityerror-duplicate-key-errors-why">
-<h3>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></h3>
+<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>.
 <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>
 Thanks to howsthedotcom.</p>
 </div>
 </div>
 <div class="section" id="why-won-t-my-task-run">
 <div class="section" id="why-won-t-my-task-run">
-<h3>Why won&#8217;t my Task run?<a class="headerlink" href="#why-won-t-my-task-run" title="Permalink to this headline">¶</a></h3>
+<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?
 <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>?).
 (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>
 Also there might be syntax errors preventing the tasks module being imported.</p>
@@ -104,11 +102,11 @@ task manually:</p>
 if it&#8217;s able to find the task, or if some other error is happening.</p>
 if it&#8217;s able to find the task, or if some other error is happening.</p>
 </div>
 </div>
 <div class="section" id="why-won-t-my-periodic-task-run">
 <div class="section" id="why-won-t-my-periodic-task-run">
-<h3>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></h3>
+<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>
 <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>
 <div class="section" id="how-do-i-discard-all-waiting-tasks">
 <div class="section" id="how-do-i-discard-all-waiting-tasks">
-<h3>How do I discard all waiting tasks?<a class="headerlink" href="#how-do-i-discard-all-waiting-tasks" title="Permalink to this headline">¶</a></h3>
+<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>
 <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>
 <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="gp">&gt;&gt;&gt; </span><span class="n">discard_all</span><span class="p">()</span>
@@ -120,7 +118,7 @@ if it&#8217;s able to find the task, or if some other error is happening.</p>
 accomplish the same thing.</p>
 accomplish the same thing.</p>
 </div>
 </div>
 <div class="section" id="i-ve-discarded-messages-but-there-are-still-messages-left-in-the-queue">
 <div class="section" id="i-ve-discarded-messages-but-there-are-still-messages-left-in-the-queue">
-<h3>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></h3>
+<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
 <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
 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
 take some time until it is actually executed, especially if there are a lot
@@ -133,7 +131,7 @@ 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>
 using <tt class="docutils literal"><span class="pre">discard_all</span></tt>.</p>
 </div>
 </div>
 <div class="section" id="can-i-use-celery-with-activemq-stomp">
 <div class="section" id="can-i-use-celery-with-activemq-stomp">
-<h3>Can I use celery with ActiveMQ/STOMP?<a class="headerlink" href="#can-i-use-celery-with-activemq-stomp" title="Permalink to this headline">¶</a></h3>
+<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.
 <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
 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
 been tested in production like RabbitMQ. If you have any problems with
@@ -186,7 +184,7 @@ the one with the most capabilities won).</p>
 specific options.</p>
 specific options.</p>
 </div>
 </div>
 <div class="section" id="which-features-are-not-supported-when-using-stomp">
 <div class="section" id="which-features-are-not-supported-when-using-stomp">
-<h3>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></h3>
+<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
 <p>This is a (possible incomplete) list of features not available when
 using the STOMP backend:</p>
 using the STOMP backend:</p>
 <ul class="simple">
 <ul class="simple">
@@ -197,7 +195,7 @@ using the STOMP backend:</p>
 </ul>
 </ul>
 </div>
 </div>
 <div class="section" id="can-i-send-some-tasks-to-only-some-servers">
 <div class="section" id="can-i-send-some-tasks-to-only-some-servers">
-<h3>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></h3>
+<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,
 <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>,
 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
 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
@@ -263,7 +261,7 @@ configuration:</p>
 </div>
 </div>
 </div>
 </div>
 <div class="section" id="can-i-use-celery-without-django">
 <div class="section" id="can-i-use-celery-without-django">
-<h3>Can I use celery without Django?<a class="headerlink" href="#can-i-use-celery-without-django" title="Permalink to this headline">¶</a></h3>
+<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><strong>Answer:</strong> Yes.</p>
 <p>Celery uses something called loaders to read/setup configuration, import
 <p>Celery uses something called loaders to read/setup configuration, import
 modules that registers tasks and to decide what happens when a task is
 modules that registers tasks and to decide what happens when a task is
@@ -333,7 +331,6 @@ run <tt class="docutils literal"><span class="pre">celeryinit</span></tt> to cre
 </pre></div>
 </pre></div>
 </div>
 </div>
 </div>
 </div>
-</div>
 </div>
 </div>
 
 
 
 
@@ -345,7 +342,6 @@ run <tt class="docutils literal"><span class="pre">celeryinit</span></tt> to cre
             <h3><a href="index.html">Table Of Contents</a></h3>
             <h3><a href="index.html">Table Of Contents</a></h3>
             <ul>
             <ul>
 <li><a class="reference external" href="">Frequently Asked Questions</a><ul>
 <li><a class="reference external" href="">Frequently Asked Questions</a><ul>
-<li><a class="reference external" href="#questions">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="#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="#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-is-task-delay-apply-just-hanging">Why is Task.delay/apply* just hanging?`</a></li>
@@ -361,8 +357,6 @@ run <tt class="docutils literal"><span class="pre">celeryinit</span></tt> to cre
 <li><a class="reference external" href="#can-i-use-celery-without-django">Can I use celery without Django?</a></li>
 <li><a class="reference external" href="#can-i-use-celery-without-django">Can I use celery without Django?</a></li>
 </ul>
 </ul>
 </li>
 </li>
-</ul>
-</li>
 </ul>
 </ul>
 
 
             <h4>Previous topic</h4>
             <h4>Previous topic</h4>

+ 16 - 4
genindex.html

@@ -257,6 +257,7 @@
 <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.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.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.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.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.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.backends.html#celery.backends.DefaultBackend">DefaultBackend (class in celery.backends)</a></dt>
@@ -341,8 +342,8 @@
 <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.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_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.backends.html#celery.backends.get_default_periodicstatus_backend_cls">get_default_periodicstatus_backend_cls() (in module celery.backends)</a></dt></dl></td><td width="33%" valign="top"><dl>
-<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.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></dl></td><td width="33%" valign="top"><dl>
 <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.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>
 <dt><a href="reference/celery.task.base.html#celery.task.base.Task.get_logger">get_logger() (celery.task.base.Task method)</a></dt>
 <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.task.base.html#celery.task.base.Task.get_publisher">get_publisher() (celery.task.base.Task method)</a></dt>
@@ -358,6 +359,10 @@
   <dd><dl>
   <dd><dl>
     <dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.get_task">(celery.registry.TaskRegistry method)</a></dt>
     <dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry.get_task">(celery.registry.TaskRegistry method)</a></dt>
   </dl></dd>
   </dl></dd>
+<dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.get_traceback">get_traceback() (celery.backends.base.BaseBackend method)</a></dt>
+  <dd><dl>
+    <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.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>
 <dt><a href="reference/celery.pool.html#celery.pool.DynamicPool.grow">grow() (celery.pool.DynamicPool method)</a></dt>
 </dl></td></tr></table>
 </dl></td></tr></table>
@@ -378,8 +383,10 @@
 
 
 <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.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.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.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.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.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.worker.html#celery.worker.WorkController.is_detached">is_detached (celery.worker.WorkController attribute)</a></dt>
 <dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.is_done">is_done() (celery.backends.base.BaseBackend method)</a></dt>
 <dt><a href="reference/celery.backends.base.html#celery.backends.base.BaseBackend.is_done">is_done() (celery.backends.base.BaseBackend method)</a></dt>
@@ -593,6 +600,7 @@
 <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.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.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.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>
 <dt><a href="reference/celery.monitoring.html#celery.monitoring.Statistics.start">start() (celery.monitoring.Statistics class method)</a></dt>
   <dd><dl>
   <dd><dl>
     <dt><a href="reference/celery.pool.html#celery.pool.TaskPool.start">(celery.pool.TaskPool method)</a></dt>
     <dt><a href="reference/celery.pool.html#celery.pool.TaskPool.start">(celery.pool.TaskPool method)</a></dt>
@@ -661,8 +669,8 @@
 <dt><a href="reference/celery.managers.html#celery.managers.TaskManager">TaskManager (class in celery.managers)</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.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.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></dl></td><td width="33%" valign="top"><dl>
-<dt><a href="reference/celery.registry.html#celery.registry.TaskRegistry">TaskRegistry (class in celery.registry)</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.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.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.task.base.html#celery.task.base.TaskSet">TaskSet (class in celery.task.base)</a></dt>
@@ -685,6 +693,10 @@
 <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">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.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>
 <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>
 <dt><a href="reference/celery.monitoring.html#celery.monitoring.Statistics.type">type (celery.monitoring.Statistics attribute)</a></dt>
   <dd><dl>
   <dd><dl>
     <dt><a href="reference/celery.task.base.html#celery.task.base.Task.type">(celery.task.base.Task attribute)</a></dt>
     <dt><a href="reference/celery.task.base.html#celery.task.base.Task.type">(celery.task.base.Task attribute)</a></dt>

+ 20 - 44
index.html

@@ -53,61 +53,37 @@
 <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#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#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#api-reference-documentation">API Reference Documentation</a></li>
-<li class="toctree-l2"><a class="reference external" href="introduction.html#installation">Installation</a><ul>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#downloading-and-installing-from-source">Downloading and installing from source</a></li>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#using-the-development-version">Using the development version</a></li>
-</ul>
-</li>
-<li class="toctree-l2"><a class="reference external" href="introduction.html#usage">Usage</a><ul>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#installing-rabbitmq">Installing RabbitMQ</a></li>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#setting-up-rabbitmq">Setting up RabbitMQ</a></li>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#configuring-your-django-project-to-use-celery">Configuring your Django project to use Celery</a></li>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#running-the-celery-worker-server">Running the celery worker server</a></li>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#defining-and-executing-tasks">Defining and executing tasks</a></li>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#auto-discovery-of-tasks">Auto-discovery of tasks</a></li>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#periodic-tasks">Periodic Tasks</a></li>
-</ul>
-</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#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><ul>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#mailing-list">Mailing list</a></li>
-<li class="toctree-l3"><a class="reference external" href="introduction.html#irc">IRC</a></li>
-</ul>
-</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#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#contributing">Contributing</a></li>
 <li class="toctree-l2"><a class="reference external" href="introduction.html#license">License</a></li>
 <li class="toctree-l2"><a class="reference external" href="introduction.html#license">License</a></li>
 </ul>
 </ul>
 </li>
 </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><ul>
-<li class="toctree-l3"><a class="reference external" href="tutorials/clickcounter.html#introduction">Introduction</a></li>
-<li class="toctree-l3"><a class="reference external" href="tutorials/clickcounter.html#the-model">The model</a></li>
-<li class="toctree-l3"><a class="reference external" href="tutorials/clickcounter.html#using-carrot-to-send-clicks-as-messages">Using carrot to send clicks as messages</a></li>
-<li class="toctree-l3"><a class="reference external" href="tutorials/clickcounter.html#view-and-urls">View and URLs</a></li>
-<li class="toctree-l3"><a class="reference external" href="tutorials/clickcounter.html#creating-the-periodic-task">Creating the periodic task</a></li>
-<li class="toctree-l3"><a class="reference external" href="tutorials/clickcounter.html#finishing">Finishing</a></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>
 </ul>
 </li>
 </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>
 </ul>
 </li>
 </li>
 <li class="toctree-l1"><a class="reference external" href="faq.html">Frequently Asked Questions</a><ul>
 <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#questions">Questions</a><ul>
-<li class="toctree-l3"><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-l3"><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-l3"><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-l3"><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-l3"><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-l3"><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-l3"><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-l3"><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-l3"><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-l3"><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-l3"><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-l3"><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-l3"><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-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>
 </ul>
 </li>
 </li>
 <li class="toctree-l1"><a class="reference external" href="reference/index.html">Module API Reference</a><ul>
 <li class="toctree-l1"><a class="reference external" href="reference/index.html">Module API Reference</a><ul>

+ 21 - 9
introduction.html

@@ -20,7 +20,7 @@
     <script type="text/javascript" src="static/jquery.js"></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/doctools.js"></script>
     <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="index.html" />
     <link rel="top" title="Celery v0.7.0 (unstable) documentation" href="index.html" />
-    <link rel="next" title="Tutorials" href="tutorials/index.html" />
+    <link rel="next" title="Cookbook" href="cookbook/index.html" />
     <link rel="prev" title="Celery - Distributed Task Queue" href="index.html" /> 
     <link rel="prev" title="Celery - Distributed Task Queue" href="index.html" /> 
   </head>
   </head>
   <body>
   <body>
@@ -34,7 +34,7 @@
           <a href="modindex.html" title="Global Module Index"
           <a href="modindex.html" title="Global Module Index"
              accesskey="M">modules</a> |</li>
              accesskey="M">modules</a> |</li>
         <li class="right" >
         <li class="right" >
-          <a href="tutorials/index.html" title="Tutorials"
+          <a href="cookbook/index.html" title="Cookbook"
              accesskey="N">next</a> |</li>
              accesskey="N">next</a> |</li>
         <li class="right" >
         <li class="right" >
           <a href="index.html" title="Celery - Distributed Task Queue"
           <a href="index.html" title="Celery - Distributed Task Queue"
@@ -86,8 +86,9 @@ see how the worker server works.</p>
 <div class="section" id="features">
 <div class="section" id="features">
 <h2>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h2>
 <h2>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h2>
 <ul>
 <ul>
-<li><p class="first">Uses AMQP messaging (RabbitMQ, ZeroMQ) to route tasks to the
-worker servers.</p>
+<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>
 <li><p class="first">You can run as many worker servers as you want, and still
 <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>
 be <em>guaranteed that the task is only executed once.</em></p>
@@ -101,7 +102,8 @@ for cronjobs.</p>
 </li>
 </li>
 <li><p class="first">When a task has been executed, the return value can be stored using
 <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,
 either a MySQL/Oracle/PostgreSQL/SQLite database, Memcached,
-or Tokyo Tyrant back-end.</p>
+or Tokyo Tyrant back-end. For high-performance you can also use
+AMQP to publish results.</p>
 </li>
 </li>
 <li><p class="first">If the task raises an exception, the exception instance is stored,
 <li><p class="first">If the task raises an exception, the exception instance is stored,
 instead of the return value.</p>
 instead of the return value.</p>
@@ -109,6 +111,13 @@ instead of the return value.</p>
 <li><p class="first">All tasks has a Universally Unique Identifier (UUID), which is the
 <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>
 task id, used for querying task status and return values.</p>
 </li>
 </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.
 <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.
 You can find out how many, or if all of the sub-tasks has been executed.
 Excellent for progress-bar like functionality.</p>
 Excellent for progress-bar like functionality.</p>
@@ -131,6 +140,9 @@ for monitoring and profiling.</p>
 </dd>
 </dd>
 </dl>
 </dl>
 </li>
 </li>
+<li><p class="first">Can be configured to send e-mails to the administrators when a task
+fails.</p>
+</li>
 </ul>
 </ul>
 </div>
 </div>
 <div class="section" id="api-reference-documentation">
 <div class="section" id="api-reference-documentation">
@@ -162,7 +174,7 @@ $ python setup.py build
 <div class="section" id="using-the-development-version">
 <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>
 <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>
 <p>You can clone the repository by doing the following:</p>
-<div class="highlight-python"><pre>$ git clone git://github.com/ask/celery.git celery</pre>
+<div class="highlight-python"><pre>$ git clone git://github.com/ask/celery.git</pre>
 </div>
 </div>
 </div>
 </div>
 </div>
 </div>
@@ -409,8 +421,8 @@ file in the top distribution directory for the full license text.</p>
             <p class="topless"><a href="index.html"
             <p class="topless"><a href="index.html"
                                   title="previous chapter">Celery - Distributed Task Queue</a></p>
                                   title="previous chapter">Celery - Distributed Task Queue</a></p>
             <h4>Next topic</h4>
             <h4>Next topic</h4>
-            <p class="topless"><a href="tutorials/index.html"
-                                  title="next chapter">Tutorials</a></p>
+            <p class="topless"><a href="cookbook/index.html"
+                                  title="next chapter">Cookbook</a></p>
             <h3>This Page</h3>
             <h3>This Page</h3>
             <ul class="this-page-menu">
             <ul class="this-page-menu">
               <li><a href="sources/introduction.txt"
               <li><a href="sources/introduction.txt"
@@ -443,7 +455,7 @@ file in the top distribution directory for the full license text.</p>
           <a href="modindex.html" title="Global Module Index"
           <a href="modindex.html" title="Global Module Index"
              >modules</a> |</li>
              >modules</a> |</li>
         <li class="right" >
         <li class="right" >
-          <a href="tutorials/index.html" title="Tutorials"
+          <a href="cookbook/index.html" title="Cookbook"
              >next</a> |</li>
              >next</a> |</li>
         <li class="right" >
         <li class="right" >
           <a href="index.html" title="Celery - Distributed Task Queue"
           <a href="index.html" title="Celery - Distributed Task Queue"

+ 8 - 0
objects.inv

@@ -98,6 +98,7 @@ celery.backends.base.BaseBackend.UnpickleableExceptionWrapper exception referenc
 celery.worker.job.TaskWrapper.kwargs attribute reference/celery.worker.job.html
 celery.worker.job.TaskWrapper.kwargs attribute reference/celery.worker.job.html
 celery.messaging.TaskPublisher.delay_task method reference/celery.messaging.html
 celery.messaging.TaskPublisher.delay_task method reference/celery.messaging.html
 celery.worker.WorkController.is_detached attribute reference/celery.worker.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.task.base.TaskSet.map_async classmethod reference/celery.task.base.html
 celery.worker.AMQPListener.reset_connection method reference/celery.worker.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.loaders.djangoapp.Loader.on_task_init method reference/celery.loaders.djangoapp.html
@@ -114,6 +115,7 @@ celery.worker.WorkController.hold_queue attribute reference/celery.worker.html
 celery.worker.job.TaskWrapper.from_message classmethod reference/celery.worker.job.html
 celery.worker.job.TaskWrapper.from_message classmethod reference/celery.worker.job.html
 celery.execute.delay_task function reference/celery.execute.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.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.task.base.ExecuteRemoteTask class reference/celery.task.base.html
 celery.worker.controllers.BackgroundThread class reference/celery.worker.controllers.html
 celery.worker.controllers.BackgroundThread class reference/celery.worker.controllers.html
 celery.worker.WorkController.logger attribute reference/celery.worker.html
 celery.worker.WorkController.logger attribute reference/celery.worker.html
@@ -127,6 +129,7 @@ celery.managers.MySQLTableLock.lock_table method reference/celery.managers.html
 celery.supervisor.OFASupervisor.Process.terminate method reference/celery.supervisor.html
 celery.supervisor.OFASupervisor.Process.terminate method reference/celery.supervisor.html
 celery.execute.apply function reference/celery.execute.html
 celery.execute.apply function reference/celery.execute.html
 celery.backends.base.BaseBackend.get_result method reference/celery.backends.base.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.EagerResult.wait method reference/celery.result.html
 celery.result.BaseAsyncResult.is_done 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.conf.LOG_LEVELS data reference/celery.conf.html
@@ -170,6 +173,7 @@ celery.backends.database.Backend.cleanup method reference/celery.backends.databa
 celery.worker.controllers.BackgroundThread.on_start method reference/celery.worker.controllers.html
 celery.worker.controllers.BackgroundThread.on_start method reference/celery.worker.controllers.html
 celery.backends.database.Backend class reference/celery.backends.database.html
 celery.backends.database.Backend class reference/celery.backends.database.html
 celery.task.builtins.PingTask class reference/celery.task.builtins.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.conf.DAEMON_LOG_FILE data reference/celery.conf.html
 celery.backends.base.find_nearest_pickleable_exception function reference/celery.backends.base.html
 celery.backends.base.find_nearest_pickleable_exception function reference/celery.backends.base.html
 celery.worker.AMQPListener.consume_messages method reference/celery.worker.html
 celery.worker.AMQPListener.consume_messages method reference/celery.worker.html
@@ -205,11 +209,13 @@ celery.registry.NotRegistered exception reference/celery.registry.html
 celery.conf.DAEMON_CONCURRENCY data reference/celery.conf.html
 celery.conf.DAEMON_CONCURRENCY data reference/celery.conf.html
 celery.registry.TaskRegistry.get_all method reference/celery.registry.html
 celery.registry.TaskRegistry.get_all method reference/celery.registry.html
 celery.managers.MySQLTableLock class reference/celery.managers.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.loaders.base.BaseLoader class reference/celery.loaders.base.html
 celery.task.base.Task.name attribute reference/celery.task.base.html
 celery.task.base.Task.name attribute reference/celery.task.base.html
 celery.execute.apply_async function reference/celery.execute.html
 celery.execute.apply_async function reference/celery.execute.html
 celery.worker.AMQPListener.bucket_queue attribute reference/celery.worker.html
 celery.worker.AMQPListener.bucket_queue attribute reference/celery.worker.html
 TaskMeta.result attribute reference/celery.models.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.conf.SEND_CELERY_TASK_ERROR_EMAILS data reference/celery.conf.html
 celery.task.dmap function reference/celery.task.html
 celery.task.dmap function reference/celery.task.html
 celery.backends.database.Backend.run_periodic_tasks method reference/celery.backends.database.html
 celery.backends.database.Backend.run_periodic_tasks method reference/celery.backends.database.html
@@ -232,12 +238,14 @@ celery.result.TimeoutError exception reference/celery.result.html
 celery.backends.database.Backend.store_result method reference/celery.backends.database.html
 celery.backends.database.Backend.store_result method reference/celery.backends.database.html
 celery.monitoring.TaskTimerStats class reference/celery.monitoring.html
 celery.monitoring.TaskTimerStats class reference/celery.monitoring.html
 PeriodicTaskMeta.task attribute reference/celery.models.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
 celery.worker.job.TaskWrapper.on_failure method reference/celery.worker.job.html
 PeriodicTaskMeta class reference/celery.models.html
 PeriodicTaskMeta class reference/celery.models.html
 celery.utils.get_full_cls_name function reference/celery.utils.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.worker.job.TaskWrapper.extend_with_default_kwargs method reference/celery.worker.job.html
 celery.result.AsyncResult class reference/celery.result.html
 celery.result.AsyncResult class reference/celery.result.html
 celery.result.TaskSetResult class reference/celery.result.html
 celery.result.TaskSetResult class reference/celery.result.html
+celery.datastructures.SharedCounter class reference/celery.datastructures.html
 celery.task.dmap_async function reference/celery.task.html
 celery.task.dmap_async function reference/celery.task.html
 celery.result.TaskSetResult.waiting method reference/celery.result.html
 celery.result.TaskSetResult.waiting method reference/celery.result.html
 celery.supervisor.OFASupervisor.Process.pid attribute reference/celery.supervisor.html
 celery.supervisor.OFASupervisor.Process.pid attribute reference/celery.supervisor.html

+ 7 - 2
reference/celery.backends.base.html

@@ -135,6 +135,11 @@ exception </em><tt class="descclassname">BaseBackend.</tt><tt class="descname">U
 <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>
 <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>
 <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">
 <dl class="method">
 <dt id="celery.backends.base.BaseBackend.is_done">
 <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>
 <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>
@@ -147,12 +152,12 @@ exception </em><tt class="descclassname">BaseBackend.</tt><tt class="descname">U
 
 
 <dl class="method">
 <dl class="method">
 <dt id="celery.backends.base.BaseBackend.mark_as_failure">
 <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><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.mark_as_failure" title="Permalink to this definition">¶</a></dt>
+<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>
 <dd>Mark task as executed with failure. Stores the execption.</dd></dl>
 
 
 <dl class="method">
 <dl class="method">
 <dt id="celery.backends.base.BaseBackend.mark_as_retry">
 <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><big>)</big><a class="headerlink" href="#celery.backends.base.BaseBackend.mark_as_retry" title="Permalink to this definition">¶</a></dt>
+<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
 <dd>Mark task as being retries. Stores the current
 exception (if any).</dd></dl>
 exception (if any).</dd></dl>
 
 

+ 7 - 2
reference/celery.backends.database.html

@@ -73,6 +73,11 @@ class </em><tt class="descclassname">celery.backends.database.</tt><tt class="de
 <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>
 <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>
 <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">
 <dl class="method">
 <dt id="celery.backends.database.Backend.init_periodic_tasks">
 <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>
 <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>
@@ -100,8 +105,8 @@ the task class and id for the resulting tasks applied.</td>
 
 
 <dl class="method">
 <dl class="method">
 <dt id="celery.backends.database.Backend.store_result">
 <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><big>)</big><a class="headerlink" href="#celery.backends.database.Backend.store_result" title="Permalink to this definition">¶</a></dt>
-<dd>Mark task as done (executed).</dd></dl>
+<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>
 </dd></dl>
 
 

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

@@ -135,6 +135,12 @@ running the program will exit complaning that the program is already
 running in the background somewhere.</p>
 running in the background somewhere.</p>
 </dd></dl>
 </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>, <em>context</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">
 <dl class="function">
 <dt id="celery.bin.celeryd.parse_options">
 <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>
 <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>

+ 36 - 0
reference/celery.datastructures.html

@@ -117,6 +117,42 @@ class </em><tt class="descname">UnfilledPosition</tt><big>(</big><em>position</e
 
 
 </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>
 
 
 
 

+ 1 - 1
reference/celery.fields.html

@@ -64,7 +64,7 @@ then it must [well, should] be a pickled one).</dd></dl>
 <dl class="class">
 <dl class="class">
 <dt id="celery.fields.PickledObjectField">
 <dt id="celery.fields.PickledObjectField">
 <em class="property">
 <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 0x2165f00&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>
+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 0x215bd50&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>
 <dd><p>A field that automatically pickles/unpickles its value.</p>
 <dl class="method">
 <dl class="method">
 <dt id="celery.fields.PickledObjectField.get_db_prep_lookup">
 <dt id="celery.fields.PickledObjectField.get_db_prep_lookup">

+ 3 - 1
reference/celery.managers.html

@@ -173,7 +173,7 @@ class </em><tt class="descclassname">celery.managers.</tt><tt class="descname">T
 
 
 <dl class="method">
 <dl class="method">
 <dt id="celery.managers.TaskManager.store_result">
 <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><big>)</big><a class="headerlink" href="#celery.managers.TaskManager.store_result" title="Permalink to this definition">¶</a></dt>
+<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>
 <dd><p>Store the result and status of a task.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-name" />
@@ -186,6 +186,8 @@ instance raised by the task.</li>
 <li><em>status</em> &#8211; Task status. See
 <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
 <tt class="xref docutils literal"><span class="pre">celery.result.AsyncResult.get_status()</span></tt> for a list of
 possible status values.</li>
 possible status values.</li>
+<li><em>traceback</em> &#8211; The traceback at the point of exception (if the
+task failed).</li>
 </ul>
 </ul>
 </td>
 </td>
 </tr>
 </tr>

+ 11 - 1
reference/celery.result.html

@@ -183,6 +183,11 @@ contains the resulting value.</blockquote>
 <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>
 <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>
 <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">
 <dl class="method">
 <dt id="celery.result.BaseAsyncResult.wait">
 <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>
 <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>
@@ -209,7 +214,7 @@ exception will be re-raised.</p>
 <dl class="class">
 <dl class="class">
 <dt id="celery.result.EagerResult">
 <dt id="celery.result.EagerResult">
 <em class="property">
 <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><big>)</big><a class="headerlink" href="#celery.result.EagerResult" title="Permalink to this definition">¶</a></dt>
+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>
 <dd><p>Result that we know has already been executed.</p>
 <dl class="exception">
 <dl class="exception">
 <dt id="celery.result.EagerResult.TimeoutError">
 <dt id="celery.result.EagerResult.TimeoutError">
@@ -237,6 +242,11 @@ exception </em><tt class="descname">TimeoutError</tt><a class="headerlink" href=
 <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>
 <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>
 <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">
 <dl class="method">
 <dt id="celery.result.EagerResult.wait">
 <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>
 <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>

+ 1 - 1
reference/celery.task.html

@@ -76,7 +76,7 @@ be deleted from the messaging server.</p>
 <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>
 <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>
 <dd><p>Distribute processing of the arguments and collect the results.</p>
 <p>Example</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="nb">map</span>
+<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="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="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>
 <span class="go">[4, 8, 16]</span>

+ 1 - 1
reference/celery.utils.html

@@ -97,7 +97,7 @@ yield the last value infinitely.</dd></dl>
 
 
 <dl class="function">
 <dl class="function">
 <dt id="celery.utils.retry_over_time">
 <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 0x21c5ab0&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>
+<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 0x21b6af0&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>
 <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
 <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>
 is increased for every retry until the max seconds is reached.</p>

+ 1 - 1
reference/celery.worker.html

@@ -57,7 +57,7 @@
 <dl class="class">
 <dl class="class">
 <dt id="celery.worker.AMQPListener">
 <dt id="celery.worker.AMQPListener">
 <em class="property">
 <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><big>)</big><a class="headerlink" href="#celery.worker.AMQPListener" title="Permalink to this definition">¶</a></dt>
+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
 <dd><p>Listen for messages received from the AMQP broker and
 move them the the bucket queue for task processing.</p>
 move them the the bucket queue for task processing.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <table class="docutils field-list" frame="void" rules="none">

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

@@ -190,6 +190,9 @@ saves the status and result of the task execution to the task
 meta backend.</p>
 meta backend.</p>
 <p>If the call was successful, it saves the result to the task result
 <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>
 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.task.base.RetryTaskError" class="reference external" href="celery.task.base.html#celery.task.base.RetryTaskError"><tt class="xref docutils literal"><span class="pre">celery.task.base.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
 <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>
 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">
 <table class="docutils field-list" frame="void" rules="none">

+ 1 - 1
reference/index.html

@@ -56,7 +56,7 @@
 <tbody valign="top">
 <tbody valign="top">
 <tr class="field"><th class="field-name">Release:</th><td class="field-body">0.7</td>
 <tr class="field"><th class="field-name">Release:</th><td class="field-body">0.7</td>
 </tr>
 </tr>
-<tr class="field"><th class="field-name">Date:</th><td class="field-body">August 15, 2009</td>
+<tr class="field"><th class="field-name">Date:</th><td class="field-body">August 20, 2009</td>
 </tr>
 </tr>
 </tbody>
 </tbody>
 </table>
 </table>

File diff suppressed because it is too large
+ 0 - 0
searchindex.js


+ 0 - 3
sources/faq.txt

@@ -2,9 +2,6 @@
  Frequently Asked Questions
  Frequently Asked Questions
 ============================
 ============================
 
 
-Questions
-=========
-
 MySQL is throwing deadlock errors, what can I do?
 MySQL is throwing deadlock errors, what can I do?
 -------------------------------------------------
 -------------------------------------------------
 
 

+ 2 - 1
sources/index.txt

@@ -9,9 +9,10 @@
 Contents:
 Contents:
 
 
 .. toctree::
 .. toctree::
-    :maxdepth: 3
+    :maxdepth: 2
 
 
     introduction
     introduction
+    cookbook/index
     tutorials/index
     tutorials/index
     faq
     faq
     reference/index
     reference/index

+ 16 - 5
sources/introduction.txt

@@ -41,8 +41,9 @@ The result of the task can be stored for later retrieval (called its
 Features
 Features
 ========
 ========
 
 
-    * Uses AMQP messaging (RabbitMQ, ZeroMQ) to route tasks to the
-      worker servers.
+    * 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
     * You can run as many worker servers as you want, and still
       be *guaranteed that the task is only executed once.*
       be *guaranteed that the task is only executed once.*
@@ -56,7 +57,8 @@ Features
 
 
     * When a task has been executed, the return value can be stored using
     * When a task has been executed, the return value can be stored using
       either a MySQL/Oracle/PostgreSQL/SQLite database, Memcached,
       either a MySQL/Oracle/PostgreSQL/SQLite database, Memcached,
-      or Tokyo Tyrant back-end.
+      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,
     * If the task raises an exception, the exception instance is stored,
       instead of the return value.
       instead of the return value.
@@ -64,6 +66,13 @@ Features
     * All tasks has a Universally Unique Identifier (UUID), which is the
     * All tasks has a Universally Unique Identifier (UUID), which is the
       task id, used for querying task status and return values.
       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.
     * 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.
       You can find out how many, or if all of the sub-tasks has been executed.
       Excellent for progress-bar like functionality.
       Excellent for progress-bar like functionality.
@@ -83,6 +92,9 @@ Features
     * Pool workers are supervised, so if for some reason a worker crashes
     * Pool workers are supervised, so if for some reason a worker crashes
         it is automatically replaced by a new worker.
         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
 API Reference Documentation
 ===========================
 ===========================
 
 
@@ -121,10 +133,9 @@ You can install it by doing the following,::
 Using the development version
 Using the development version
 ------------------------------
 ------------------------------
 
 
-
 You can clone the repository by doing the following::
 You can clone the repository by doing the following::
 
 
-    $ git clone git://github.com/ask/celery.git celery
+    $ git clone git://github.com/ask/celery.git
 
 
 
 
 Usage
 Usage

+ 6 - 6
tutorials/index.html

@@ -21,7 +21,7 @@
     <script type="text/javascript" src="../static/doctools.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="top" title="Celery v0.7.0 (unstable) documentation" href="../index.html" />
     <link rel="next" title="Tutorial: Creating a click counter using carrot and celery" href="clickcounter.html" />
     <link rel="next" title="Tutorial: Creating a click counter using carrot and celery" href="clickcounter.html" />
-    <link rel="prev" title="celery - Distributed Task Queue for Django/Python" href="../introduction.html" /> 
+    <link rel="prev" title="Retrying Tasks" href="../cookbook/task-retries.html" /> 
   </head>
   </head>
   <body>
   <body>
     <div class="related">
     <div class="related">
@@ -37,7 +37,7 @@
           <a href="clickcounter.html" title="Tutorial: Creating a click counter using carrot and celery"
           <a href="clickcounter.html" title="Tutorial: Creating a click counter using carrot and celery"
              accesskey="N">next</a> |</li>
              accesskey="N">next</a> |</li>
         <li class="right" >
         <li class="right" >
-          <a href="../introduction.html" title="celery - Distributed Task Queue for Django/Python"
+          <a href="../cookbook/task-retries.html" title="Retrying Tasks"
              accesskey="P">previous</a> |</li>
              accesskey="P">previous</a> |</li>
         <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
         <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
       </ul>
       </ul>
@@ -56,7 +56,7 @@
 <tbody valign="top">
 <tbody valign="top">
 <tr class="field"><th class="field-name">Release:</th><td class="field-body">0.7</td>
 <tr class="field"><th class="field-name">Release:</th><td class="field-body">0.7</td>
 </tr>
 </tr>
-<tr class="field"><th class="field-name">Date:</th><td class="field-body">August 15, 2009</td>
+<tr class="field"><th class="field-name">Date:</th><td class="field-body">August 20, 2009</td>
 </tr>
 </tr>
 </tbody>
 </tbody>
 </table>
 </table>
@@ -80,8 +80,8 @@
       <div class="sphinxsidebar">
       <div class="sphinxsidebar">
         <div class="sphinxsidebarwrapper">
         <div class="sphinxsidebarwrapper">
             <h4>Previous topic</h4>
             <h4>Previous topic</h4>
-            <p class="topless"><a href="../introduction.html"
-                                  title="previous chapter">celery - Distributed Task Queue for Django/Python</a></p>
+            <p class="topless"><a href="../cookbook/task-retries.html"
+                                  title="previous chapter">Retrying Tasks</a></p>
             <h4>Next topic</h4>
             <h4>Next topic</h4>
             <p class="topless"><a href="clickcounter.html"
             <p class="topless"><a href="clickcounter.html"
                                   title="next chapter">Tutorial: Creating a click counter using carrot and celery</a></p>
                                   title="next chapter">Tutorial: Creating a click counter using carrot and celery</a></p>
@@ -120,7 +120,7 @@
           <a href="clickcounter.html" title="Tutorial: Creating a click counter using carrot and celery"
           <a href="clickcounter.html" title="Tutorial: Creating a click counter using carrot and celery"
              >next</a> |</li>
              >next</a> |</li>
         <li class="right" >
         <li class="right" >
-          <a href="../introduction.html" title="celery - Distributed Task Queue for Django/Python"
+          <a href="../cookbook/task-retries.html" title="Retrying Tasks"
              >previous</a> |</li>
              >previous</a> |</li>
         <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
         <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
       </ul>
       </ul>

Some files were not shown because too many files changed in this diff