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