Przeglądaj źródła

Autogenerated documentation for github.

Ask Solem 15 lat temu
rodzic
commit
3e6d26ed73

+ 13 - 19
faq.html

@@ -50,10 +50,8 @@
             
   <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="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">
-<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>,
 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>
@@ -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>
 </div>
 <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">
 <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">
-<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
 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">
-<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
 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">
-<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>.
 Thanks to howsthedotcom.</p>
 </div>
 <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?
 (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>
@@ -104,11 +102,11 @@ task manually:</p>
 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">
-<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>
 </div>
 <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>
 <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>
@@ -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>
 </div>
 <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
 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
@@ -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>
 </div>
 <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.
 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
@@ -186,7 +184,7 @@ the one with the most capabilities won).</p>
 specific options.</p>
 </div>
 <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
 using the STOMP backend:</p>
 <ul class="simple">
@@ -197,7 +195,7 @@ using the STOMP backend:</p>
 </ul>
 </div>
 <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,
 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
@@ -263,7 +261,7 @@ configuration:</p>
 </div>
 </div>
 <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>Celery uses something called loaders to read/setup configuration, import
 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>
 </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>
             <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="#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>
@@ -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>
 </ul>
 </li>
-</ul>
-</li>
 </ul>
 
             <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.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>
@@ -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.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></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.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>
@@ -358,6 +359,10 @@
   <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.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.pool.html#celery.pool.DynamicPool.grow">grow() (celery.pool.DynamicPool method)</a></dt>
 </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.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.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.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>
@@ -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.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></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.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>
@@ -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_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>

+ 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#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><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#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#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="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>
 </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#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>
 </li>
 <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/doctools.js"></script>
     <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" /> 
   </head>
   <body>
@@ -34,7 +34,7 @@
           <a href="modindex.html" title="Global Module Index"
              accesskey="M">modules</a> |</li>
         <li class="right" >
-          <a href="tutorials/index.html" title="Tutorials"
+          <a href="cookbook/index.html" title="Cookbook"
              accesskey="N">next</a> |</li>
         <li class="right" >
           <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">
 <h2>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h2>
 <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><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>
@@ -101,7 +102,8 @@ 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.</p>
+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>
@@ -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
 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>
@@ -131,6 +140,9 @@ for monitoring and profiling.</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">
@@ -162,7 +174,7 @@ $ python setup.py build
 <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 celery</pre>
+<div class="highlight-python"><pre>$ git clone git://github.com/ask/celery.git</pre>
 </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"
                                   title="previous chapter">Celery - Distributed Task Queue</a></p>
             <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>
             <ul class="this-page-menu">
               <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"
              >modules</a> |</li>
         <li class="right" >
-          <a href="tutorials/index.html" title="Tutorials"
+          <a href="cookbook/index.html" title="Cookbook"
              >next</a> |</li>
         <li class="right" >
           <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.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
@@ -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.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
@@ -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.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
@@ -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.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.backends.base.find_nearest_pickleable_exception function reference/celery.backends.base.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.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
@@ -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.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.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.result.TaskSetResult.waiting method reference/celery.result.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>
 <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>
@@ -147,12 +152,12 @@ exception </em><tt class="descclassname">BaseBackend.</tt><tt class="descname">U
 
 <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><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>
 
 <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><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
 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>
 <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>
@@ -100,8 +105,8 @@ the task class and id for the resulting tasks applied.</td>
 
 <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><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>
 

+ 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>
 </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">
 <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>

+ 36 - 0
reference/celery.datastructures.html

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

+ 1 - 1
reference/celery.fields.html

@@ -64,7 +64,7 @@ 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 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>
 <dl class="method">
 <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">
 <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>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -186,6 +186,8 @@ 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>

+ 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>
 <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>
@@ -209,7 +214,7 @@ exception will be re-raised.</p>
 <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><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>
 <dl class="exception">
 <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>
 <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>

+ 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>
 <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="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="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>

+ 1 - 1
reference/celery.utils.html

@@ -97,7 +97,7 @@ 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 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>
 <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>

+ 1 - 1
reference/celery.worker.html

@@ -57,7 +57,7 @@
 <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><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
 move them the the bucket queue for task processing.</p>
 <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>
 <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.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
 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">

+ 1 - 1
reference/index.html

@@ -56,7 +56,7 @@
 <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 15, 2009</td>
+<tr class="field"><th class="field-name">Date:</th><td class="field-body">August 20, 2009</td>
 </tr>
 </tbody>
 </table>

Plik diff jest za duży
+ 0 - 0
searchindex.js


+ 0 - 3
sources/faq.txt

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

+ 2 - 1
sources/index.txt

@@ -9,9 +9,10 @@
 Contents:
 
 .. toctree::
-    :maxdepth: 3
+    :maxdepth: 2
 
     introduction
+    cookbook/index
     tutorials/index
     faq
     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
 ========
 
-    * 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
       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
       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,
       instead of the return value.
@@ -64,6 +66,13 @@ Features
     * 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.
@@ -83,6 +92,9 @@ Features
     * 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
 ===========================
 
@@ -121,10 +133,9 @@ You can install it by doing the following,::
 Using the development version
 ------------------------------
 
-
 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

+ 6 - 6
tutorials/index.html

@@ -21,7 +21,7 @@
     <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="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>
   <body>
     <div class="related">
@@ -37,7 +37,7 @@
           <a href="clickcounter.html" title="Tutorial: Creating a click counter using carrot and celery"
              accesskey="N">next</a> |</li>
         <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>
         <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
       </ul>
@@ -56,7 +56,7 @@
 <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 15, 2009</td>
+<tr class="field"><th class="field-name">Date:</th><td class="field-body">August 20, 2009</td>
 </tr>
 </tbody>
 </table>
@@ -80,8 +80,8 @@
       <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>
+            <p class="topless"><a href="../cookbook/task-retries.html"
+                                  title="previous chapter">Retrying Tasks</a></p>
             <h4>Next topic</h4>
             <p class="topless"><a href="clickcounter.html"
                                   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"
              >next</a> |</li>
         <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>
         <li><a href="../index.html">Celery v0.7.0 (unstable) documentation</a> &raquo;</li> 
       </ul>

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików