celery.task.base.html 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Defining Tasks - celery.task.base &mdash; Celery v0.4.13 (stable) documentation</title>
  7. <link rel="stylesheet" href="../static/nature.css" type="text/css" />
  8. <link rel="stylesheet" href="../static/pygments.css" type="text/css" />
  9. <script type="text/javascript">
  10. var DOCUMENTATION_OPTIONS = {
  11. URL_ROOT: '../',
  12. VERSION: '0.4.13 (stable)',
  13. COLLAPSE_MODINDEX: false,
  14. FILE_SUFFIX: '.html',
  15. HAS_SOURCE: true
  16. };
  17. </script>
  18. <script type="text/javascript" src="../static/jquery.js"></script>
  19. <script type="text/javascript" src="../static/doctools.js"></script>
  20. <link rel="top" title="Celery v0.4.13 (stable) documentation" href="../index.html" />
  21. <link rel="up" title="Module API Reference" href="index.html" />
  22. <link rel="next" title="Executing Tasks - celery.execute" href="celery.execute.html" />
  23. <link rel="prev" title="Module API Reference" href="index.html" />
  24. </head>
  25. <body>
  26. <div class="related">
  27. <h3>Navigation</h3>
  28. <ul>
  29. <li class="right" style="margin-right: 10px">
  30. <a href="../genindex.html" title="General Index"
  31. accesskey="I">index</a></li>
  32. <li class="right" >
  33. <a href="../modindex.html" title="Global Module Index"
  34. accesskey="M">modules</a> |</li>
  35. <li class="right" >
  36. <a href="celery.execute.html" title="Executing Tasks - celery.execute"
  37. accesskey="N">next</a> |</li>
  38. <li class="right" >
  39. <a href="index.html" title="Module API Reference"
  40. accesskey="P">previous</a> |</li>
  41. <li><a href="../index.html">Celery v0.4.13 (stable) documentation</a> &raquo;</li>
  42. <li><a href="index.html" accesskey="U">Module API Reference</a> &raquo;</li>
  43. </ul>
  44. </div>
  45. <div class="document">
  46. <div class="documentwrapper">
  47. <div class="bodywrapper">
  48. <div class="body">
  49. <div class="section" id="module-celery.task.base">
  50. <h1>Defining Tasks - celery.task.base<a class="headerlink" href="#module-celery.task.base" title="Permalink to this headline">¶</a></h1>
  51. <dl class="class">
  52. <dt id="celery.task.base.AsynchronousMapTask">
  53. <em class="property">
  54. 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>
  55. <dd><p>Task used internally by <tt class="xref docutils literal"><span class="pre">dmap_async()</span></tt> and
  56. <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>
  57. <dl class="method">
  58. <dt id="celery.task.base.AsynchronousMapTask.run">
  59. <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>
  60. <dd>The method run by <tt class="docutils literal"><span class="pre">celeryd</span></tt>.</dd></dl>
  61. </dd></dl>
  62. <dl class="class">
  63. <dt id="celery.task.base.ExecuteRemoteTask">
  64. <em class="property">
  65. 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>
  66. <dd><p>Execute an arbitrary function or object.</p>
  67. <p><em>Note</em> You probably want <tt class="xref docutils literal"><span class="pre">execute_remote()</span></tt> instead, which this
  68. is an internal component of.</p>
  69. <p>The object must be pickleable, so you can&#8217;t use lambdas or functions
  70. defined in the REPL (that is the python shell, or <tt class="docutils literal"><span class="pre">ipython</span></tt>).</p>
  71. <dl class="method">
  72. <dt id="celery.task.base.ExecuteRemoteTask.run">
  73. <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>
  74. <dd><table class="docutils field-list" frame="void" rules="none">
  75. <col class="field-name" />
  76. <col class="field-body" />
  77. <tbody valign="top">
  78. <tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
  79. <li><em>ser_callable</em> &#8211; A pickled function or callable object.</li>
  80. <li><em>fargs</em> &#8211; Positional arguments to apply to the function.</li>
  81. <li><em>fkwargs</em> &#8211; Keyword arguments to apply to the function.</li>
  82. </ul>
  83. </td>
  84. </tr>
  85. </tbody>
  86. </table>
  87. </dd></dl>
  88. </dd></dl>
  89. <dl class="class">
  90. <dt id="celery.task.base.PeriodicTask">
  91. <em class="property">
  92. 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>
  93. <dd><p>A periodic task is a task that behaves like a <em>cron</em> job.</p>
  94. <dl class="attribute">
  95. <dt id="celery.task.base.PeriodicTask.run_every">
  96. <tt class="descname">run_every</tt><a class="headerlink" href="#celery.task.base.PeriodicTask.run_every" title="Permalink to this definition">¶</a></dt>
  97. <dd><em>REQUIRED</em> Defines how often the task is run (its interval),
  98. it can be either a <tt class="xref docutils literal"><span class="pre">datetime.timedelta</span></tt> object or an
  99. integer specifying the time in seconds.</dd></dl>
  100. <table class="docutils field-list" frame="void" rules="none">
  101. <col class="field-name" />
  102. <col class="field-body" />
  103. <tbody valign="top">
  104. <tr class="field"><th class="field-name" colspan="2">Raises NotImplementedError:</th></tr>
  105. <tr><td>&nbsp;</td><td class="field-body">if the <a title="celery.task.base.PeriodicTask.run_every" class="reference internal" href="#celery.task.base.PeriodicTask.run_every"><tt class="xref docutils literal"><span class="pre">run_every</span></tt></a> attribute is
  106. not defined.</td>
  107. </tr>
  108. </tbody>
  109. </table>
  110. <p>You have to register the periodic task in the task registry.</p>
  111. <p>Example</p>
  112. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">tasks</span><span class="p">,</span> <span class="n">PeriodicTask</span>
  113. <span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">timedelta</span>
  114. <span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyPeriodicTask</span><span class="p">(</span><span class="n">PeriodicTask</span><span class="p">):</span>
  115. <span class="gp">... </span> <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;my_periodic_task&quot;</span>
  116. <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>
  117. <span class="gp">...</span>
  118. <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>
  119. <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>
  120. <span class="gp">... </span> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Running MyPeriodicTask&quot;</span><span class="p">)</span>
  121. <span class="gp">&gt;&gt;&gt; </span><span class="n">tasks</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">MyPeriodicTask</span><span class="p">)</span>
  122. </pre></div>
  123. </div>
  124. </dd></dl>
  125. <dl class="class">
  126. <dt id="celery.task.base.Task">
  127. <em class="property">
  128. 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>
  129. <dd><p>A task that can be delayed for execution by the <tt class="docutils literal"><span class="pre">celery</span></tt> daemon.</p>
  130. <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,
  131. which is the actual method the <tt class="docutils literal"><span class="pre">celery</span></tt> daemon executes.</p>
  132. <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>
  133. <dl class="attribute">
  134. <dt id="celery.task.base.Task.name">
  135. <tt class="descname">name</tt><a class="headerlink" href="#celery.task.base.Task.name" title="Permalink to this definition">¶</a></dt>
  136. <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
  137. <a title="celery.task.base.Task.name" class="reference internal" href="#celery.task.base.Task.name"><tt class="xref docutils literal"><span class="pre">name</span></tt></a> attribute. This is the name of the task, registered
  138. in the task registry, and passed to <tt class="xref docutils literal"><span class="pre">delay_task()</span></tt>.</dd></dl>
  139. <dl class="attribute">
  140. <dt id="celery.task.base.Task.type">
  141. <tt class="descname">type</tt><a class="headerlink" href="#celery.task.base.Task.type" title="Permalink to this definition">¶</a></dt>
  142. <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>,
  143. however if you want a periodic task, you should subclass
  144. <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>
  145. <dl class="attribute">
  146. <dt id="celery.task.base.Task.routing_key">
  147. <tt class="descname">routing_key</tt><a class="headerlink" href="#celery.task.base.Task.routing_key" title="Permalink to this definition">¶</a></dt>
  148. <dd>Override the global default <tt class="docutils literal"><span class="pre">routing_key</span></tt> for this task.</dd></dl>
  149. <dl class="attribute">
  150. <dt id="celery.task.base.Task.mandatory">
  151. <tt class="descname">mandatory</tt><a class="headerlink" href="#celery.task.base.Task.mandatory" title="Permalink to this definition">¶</a></dt>
  152. <dd>If set, the message has mandatory routing. By default the message
  153. is silently dropped by the broker if it can&#8217;t be routed to a queue.
  154. However - If the message is mandatory, an exception will be raised
  155. instead.</dd></dl>
  156. <dl class="attribute">
  157. <dt>
  158. <tt class="descname">immediate:</tt></dt>
  159. <dd>Request immediate delivery. If the message cannot be routed to a
  160. task worker immediately, an exception will be raised. This is
  161. instead of the default behaviour, where the broker will accept and
  162. queue the message, but with no guarantee that the message will ever
  163. be consumed.</dd></dl>
  164. <dl class="attribute">
  165. <dt>
  166. <tt class="descname">priority:</tt></dt>
  167. <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>
  168. <dl class="attribute">
  169. <dt id="celery.task.base.Task.ignore_result">
  170. <tt class="descname">ignore_result</tt><a class="headerlink" href="#celery.task.base.Task.ignore_result" title="Permalink to this definition">¶</a></dt>
  171. <dd>Don&#8217;t store the status and return value. This means you can&#8217;t
  172. use the <a title="celery.result.AsyncResult" class="reference external" href="celery.result.html#celery.result.AsyncResult"><tt class="xref docutils literal"><span class="pre">celery.result.AsyncResult</span></tt></a> to check if the task is
  173. done, or get its return value. Only use if you need the performance
  174. and is able live without these features. Any exceptions raised will
  175. store the return value/status as usual.</dd></dl>
  176. <dl class="attribute">
  177. <dt id="celery.task.base.Task.disable_error_emails">
  178. <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>
  179. <dd>Disable all error e-mails for this task (only applicable if
  180. <tt class="docutils literal"><span class="pre">settings.SEND_CELERY_ERROR_EMAILS</span></tt> is on.)</dd></dl>
  181. <table class="docutils field-list" frame="void" rules="none">
  182. <col class="field-name" />
  183. <col class="field-body" />
  184. <tbody valign="top">
  185. <tr class="field"><th class="field-name" colspan="2">Raises NotImplementedError:</th></tr>
  186. <tr><td>&nbsp;</td><td class="field-body">if the <a title="celery.task.base.Task.name" class="reference internal" href="#celery.task.base.Task.name"><tt class="xref docutils literal"><span class="pre">name</span></tt></a> attribute is not set.</td>
  187. </tr>
  188. </tbody>
  189. </table>
  190. <p>The resulting class is callable, which if called will apply the
  191. <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>
  192. <p>Examples</p>
  193. <p>This is a simple task just logging a message,</p>
  194. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">tasks</span><span class="p">,</span> <span class="n">Task</span>
  195. <span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyTask</span><span class="p">(</span><span class="n">Task</span><span class="p">):</span>
  196. <span class="gp">... </span> <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;mytask&quot;</span>
  197. <span class="gp">...</span>
  198. <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>
  199. <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>
  200. <span class="gp">... </span> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Running MyTask with arg some_arg=</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span>
  201. <span class="gp">... </span> <span class="n">some_arg</span><span class="p">))</span>
  202. <span class="gp">... </span> <span class="k">return</span> <span class="mf">42</span>
  203. <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>
  204. </pre></div>
  205. </div>
  206. <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>
  207. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">MyTask</span><span class="o">.</span><span class="n">delay</span><span class="p">(</span><span class="n">some_arg</span><span class="o">=</span><span class="s">&quot;foo&quot;</span><span class="p">)</span>
  208. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">status</span> <span class="c"># after some time</span>
  209. <span class="go">&#39;DONE&#39;</span>
  210. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">result</span>
  211. <span class="go">42</span>
  212. </pre></div>
  213. </div>
  214. <p>...or using the <tt class="xref docutils literal"><span class="pre">delay_task()</span></tt> function, by passing the name of
  215. the task.</p>
  216. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">delay_task</span>
  217. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">delay_task</span><span class="p">(</span><span class="n">MyTask</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">some_arg</span><span class="o">=</span><span class="s">&quot;foo&quot;</span><span class="p">)</span>
  218. </pre></div>
  219. </div>
  220. <dl class="classmethod">
  221. <dt id="celery.task.base.Task.apply">
  222. <em class="property">
  223. 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>
  224. <dd><p>Execute this task at once, by blocking until the task
  225. has finished executing.</p>
  226. <table class="docutils field-list" frame="void" rules="none">
  227. <col class="field-name" />
  228. <col class="field-body" />
  229. <tbody valign="top">
  230. <tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  231. <li><em>args</em> &#8211; positional arguments passed on to the task.</li>
  232. <li><em>kwargs</em> &#8211; keyword arguments passed on to the task.</li>
  233. </ul>
  234. </td>
  235. </tr>
  236. <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>
  237. </td>
  238. </tr>
  239. </tbody>
  240. </table>
  241. <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>
  242. </dd></dl>
  243. <dl class="classmethod">
  244. <dt id="celery.task.base.Task.apply_async">
  245. <em class="property">
  246. 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>
  247. <dd><p>Delay this task for execution by the <tt class="docutils literal"><span class="pre">celery</span></tt> daemon(s).</p>
  248. <table class="docutils field-list" frame="void" rules="none">
  249. <col class="field-name" />
  250. <col class="field-body" />
  251. <tbody valign="top">
  252. <tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  253. <li><em>args</em> &#8211; positional arguments passed on to the task.</li>
  254. <li><em>kwargs</em> &#8211; keyword arguments passed on to the task.</li>
  255. </ul>
  256. </td>
  257. </tr>
  258. <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>
  259. </td>
  260. </tr>
  261. </tbody>
  262. </table>
  263. <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>
  264. </dd></dl>
  265. <dl class="classmethod">
  266. <dt id="celery.task.base.Task.delay">
  267. <em class="property">
  268. 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>
  269. <dd><p>Delay this task for execution by the <tt class="docutils literal"><span class="pre">celery</span></tt> daemon(s).</p>
  270. <table class="docutils field-list" frame="void" rules="none">
  271. <col class="field-name" />
  272. <col class="field-body" />
  273. <tbody valign="top">
  274. <tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  275. <li><em>*args</em> &#8211; positional arguments passed on to the task.</li>
  276. <li><em>**kwargs</em> &#8211; keyword arguments passed on to the task.</li>
  277. </ul>
  278. </td>
  279. </tr>
  280. <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>
  281. </td>
  282. </tr>
  283. </tbody>
  284. </table>
  285. <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>
  286. </dd></dl>
  287. <dl class="method">
  288. <dt id="celery.task.base.Task.get_consumer">
  289. <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>
  290. <dd><p>Get a celery task message consumer.</p>
  291. <table class="docutils field-list" frame="void" rules="none">
  292. <col class="field-name" />
  293. <col class="field-body" />
  294. <tbody valign="top">
  295. <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>
  296. </tr>
  297. </tbody>
  298. </table>
  299. <p>Please be sure to close the AMQP connection when you&#8217;re done
  300. with this object. i.e.:</p>
  301. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">consumer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_consumer</span><span class="p">()</span>
  302. <span class="gp">&gt;&gt;&gt; </span><span class="c"># do something with consumer</span>
  303. <span class="gp">&gt;&gt;&gt; </span><span class="n">consumer</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
  304. </pre></div>
  305. </div>
  306. </dd></dl>
  307. <dl class="method">
  308. <dt id="celery.task.base.Task.get_logger">
  309. <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>
  310. <dd><p>Get process-aware logger object.</p>
  311. <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>
  312. </dd></dl>
  313. <dl class="method">
  314. <dt id="celery.task.base.Task.get_publisher">
  315. <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>
  316. <dd><p>Get a celery task message publisher.</p>
  317. <table class="docutils field-list" frame="void" rules="none">
  318. <col class="field-name" />
  319. <col class="field-body" />
  320. <tbody valign="top">
  321. <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>
  322. </tr>
  323. </tbody>
  324. </table>
  325. <p>Please be sure to close the AMQP connection when you&#8217;re done
  326. with this object, i.e.:</p>
  327. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">publisher</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_publisher</span><span class="p">()</span>
  328. <span class="gp">&gt;&gt;&gt; </span><span class="c"># do something with publisher</span>
  329. <span class="gp">&gt;&gt;&gt; </span><span class="n">publisher</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
  330. </pre></div>
  331. </div>
  332. </dd></dl>
  333. <dl class="method">
  334. <dt id="celery.task.base.Task.run">
  335. <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>
  336. <dd><p><em>REQUIRED</em> The actual task.</p>
  337. <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>
  338. <table class="docutils field-list" frame="void" rules="none">
  339. <col class="field-name" />
  340. <col class="field-body" />
  341. <tbody valign="top">
  342. <tr class="field"><th class="field-name" colspan="2">Raises NotImplementedError:</th></tr>
  343. <tr><td>&nbsp;</td><td class="field-body">by default, so you have to override
  344. this method in your subclass.</td>
  345. </tr>
  346. </tbody>
  347. </table>
  348. </dd></dl>
  349. </dd></dl>
  350. <dl class="class">
  351. <dt id="celery.task.base.TaskSet">
  352. <em class="property">
  353. 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>
  354. <dd><p>A task containing several subtasks, making it possible
  355. to track how many, or when all of the tasks has been completed.</p>
  356. <table class="docutils field-list" frame="void" rules="none">
  357. <col class="field-name" />
  358. <col class="field-body" />
  359. <tbody valign="top">
  360. <tr class="field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
  361. <li><em>task</em> &#8211; The task class or name.
  362. Can either be a fully qualified task name, or a task class.</li>
  363. <li><em>args</em> &#8211; A list of args, kwargs pairs.
  364. 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>
  365. </ul>
  366. </td>
  367. </tr>
  368. </tbody>
  369. </table>
  370. <dl class="attribute">
  371. <dt id="celery.task.base.TaskSet.task_name">
  372. <tt class="descname">task_name</tt><a class="headerlink" href="#celery.task.base.TaskSet.task_name" title="Permalink to this definition">¶</a></dt>
  373. <dd>The name of the task.</dd></dl>
  374. <dl class="attribute">
  375. <dt id="celery.task.base.TaskSet.arguments">
  376. <tt class="descname">arguments</tt><a class="headerlink" href="#celery.task.base.TaskSet.arguments" title="Permalink to this definition">¶</a></dt>
  377. <dd>The arguments, as passed to the task set constructor.</dd></dl>
  378. <dl class="attribute">
  379. <dt id="celery.task.base.TaskSet.total">
  380. <tt class="descname">total</tt><a class="headerlink" href="#celery.task.base.TaskSet.total" title="Permalink to this definition">¶</a></dt>
  381. <dd>Total number of tasks in this task set.</dd></dl>
  382. <p>Example</p>
  383. <blockquote>
  384. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">djangofeeds.tasks</span> <span class="kn">import</span> <span class="n">RefreshFeedTask</span>
  385. <span class="gp">&gt;&gt;&gt; </span><span class="n">taskset</span> <span class="o">=</span> <span class="n">TaskSet</span><span class="p">(</span><span class="n">RefreshFeedTask</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">[</span>
  386. <span class="gp">... </span> <span class="p">[],</span> <span class="p">{</span><span class="s">&quot;feed_url&quot;</span><span class="p">:</span> <span class="s">&quot;http://cnn.com/rss&quot;</span><span class="p">},</span>
  387. <span class="gp">... </span> <span class="p">[],</span> <span class="p">{</span><span class="s">&quot;feed_url&quot;</span><span class="p">:</span> <span class="s">&quot;http://bbc.com/rss&quot;</span><span class="p">},</span>
  388. <span class="gp">... </span> <span class="p">[],</span> <span class="p">{</span><span class="s">&quot;feed_url&quot;</span><span class="p">:</span> <span class="s">&quot;http://xkcd.com/rss&quot;</span><span class="p">}])</span>
  389. </pre></div>
  390. </div>
  391. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">taskset_result</span> <span class="o">=</span> <span class="n">taskset</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
  392. <span class="gp">&gt;&gt;&gt; </span><span class="n">list_of_return_values</span> <span class="o">=</span> <span class="n">taskset</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
  393. </pre></div>
  394. </div>
  395. </blockquote>
  396. <dl class="method">
  397. <dt id="celery.task.base.TaskSet.join">
  398. <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>
  399. <dd><p>Gather the results for all of the tasks in the taskset,
  400. and return a list with them ordered by the order of which they
  401. were called.</p>
  402. <table class="docutils field-list" frame="void" rules="none">
  403. <col class="field-name" />
  404. <col class="field-body" />
  405. <tbody valign="top">
  406. <tr class="field"><th class="field-name">Parameter:</th><td class="field-body"><em>timeout</em> &#8211; The time in seconds, how long
  407. it will wait for results, before the operation times out.</td>
  408. </tr>
  409. <tr class="field"><th class="field-name" colspan="2">Raises TimeoutError:</th></tr>
  410. <tr><td>&nbsp;</td><td class="field-body">if <tt class="docutils literal"><span class="pre">timeout</span></tt> is not <tt class="xref docutils literal"><span class="pre">None</span></tt>
  411. and the operation takes longer than <tt class="docutils literal"><span class="pre">timeout</span></tt> seconds.</td>
  412. </tr>
  413. </tbody>
  414. </table>
  415. <p>If any of the tasks raises an exception, the exception
  416. will be reraised by <a title="celery.task.base.TaskSet.join" class="reference internal" href="#celery.task.base.TaskSet.join"><tt class="xref docutils literal"><span class="pre">join()</span></tt></a>.</p>
  417. <table class="docutils field-list" frame="void" rules="none">
  418. <col class="field-name" />
  419. <col class="field-body" />
  420. <tbody valign="top">
  421. <tr class="field"><th class="field-name">Returns:</th><td class="field-body">list of return values for all tasks in the taskset.</td>
  422. </tr>
  423. </tbody>
  424. </table>
  425. </dd></dl>
  426. <dl class="classmethod">
  427. <dt id="celery.task.base.TaskSet.map">
  428. <em class="property">
  429. 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>
  430. <dd>Distribute processing of the arguments and collect the results.</dd></dl>
  431. <dl class="classmethod">
  432. <dt id="celery.task.base.TaskSet.map_async">
  433. <em class="property">
  434. 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>
  435. <dd><p>Distribute processing of the arguments and collect the results
  436. asynchronously.</p>
  437. <table class="docutils field-list" frame="void" rules="none">
  438. <col class="field-name" />
  439. <col class="field-body" />
  440. <tbody valign="top">
  441. <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>
  442. </tr>
  443. </tbody>
  444. </table>
  445. </dd></dl>
  446. <dl class="classmethod">
  447. <dt id="celery.task.base.TaskSet.remote_execute">
  448. <em class="property">
  449. 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>
  450. <dd>Apply <tt class="docutils literal"><span class="pre">args</span></tt> to function by distributing the args to the
  451. celery server(s).</dd></dl>
  452. <dl class="method">
  453. <dt id="celery.task.base.TaskSet.run">
  454. <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>
  455. <dd><p>Run all tasks in the taskset.</p>
  456. <table class="docutils field-list" frame="void" rules="none">
  457. <col class="field-name" />
  458. <col class="field-body" />
  459. <tbody valign="top">
  460. <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>
  461. </tr>
  462. </tbody>
  463. </table>
  464. <p>Example</p>
  465. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ts</span> <span class="o">=</span> <span class="n">TaskSet</span><span class="p">(</span><span class="n">RefreshFeedTask</span><span class="p">,</span> <span class="p">[</span>
  466. <span class="gp">... </span> <span class="p">[</span><span class="s">&quot;http://foo.com/rss&quot;</span><span class="p">,</span> <span class="p">{}],</span>
  467. <span class="gp">... </span> <span class="p">[</span><span class="s">&quot;http://bar.com/rss&quot;</span><span class="p">,</span> <span class="p">{}],</span>
  468. <span class="gp">... </span><span class="p">)</span>
  469. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">ts</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
  470. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">taskset_id</span>
  471. <span class="go">&quot;d2c9b261-8eff-4bfb-8459-1e1b72063514&quot;</span>
  472. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">subtask_ids</span>
  473. <span class="go">[&quot;b4996460-d959-49c8-aeb9-39c530dcde25&quot;,</span>
  474. <span class="go">&quot;598d2d18-ab86-45ca-8b4f-0779f5d6a3cb&quot;]</span>
  475. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">waiting</span><span class="p">()</span>
  476. <span class="go">True</span>
  477. <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">10</span><span class="p">)</span>
  478. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">ready</span><span class="p">()</span>
  479. <span class="go">True</span>
  480. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">successful</span><span class="p">()</span>
  481. <span class="go">True</span>
  482. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">failed</span><span class="p">()</span>
  483. <span class="go">False</span>
  484. <span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
  485. <span class="go">[True, True]</span>
  486. </pre></div>
  487. </div>
  488. </dd></dl>
  489. </dd></dl>
  490. </div>
  491. </div>
  492. </div>
  493. </div>
  494. <div class="sphinxsidebar">
  495. <div class="sphinxsidebarwrapper">
  496. <h4>Previous topic</h4>
  497. <p class="topless"><a href="index.html"
  498. title="previous chapter">Module API Reference</a></p>
  499. <h4>Next topic</h4>
  500. <p class="topless"><a href="celery.execute.html"
  501. title="next chapter">Executing Tasks - celery.execute</a></p>
  502. <h3>This Page</h3>
  503. <ul class="this-page-menu">
  504. <li><a href="../sources/reference/celery.task.base.txt"
  505. rel="nofollow">Show Source</a></li>
  506. </ul>
  507. <div id="searchbox" style="display: none">
  508. <h3>Quick search</h3>
  509. <form class="search" action="../search.html" method="get">
  510. <input type="text" name="q" size="18" />
  511. <input type="submit" value="Go" />
  512. <input type="hidden" name="check_keywords" value="yes" />
  513. <input type="hidden" name="area" value="default" />
  514. </form>
  515. <p class="searchtip" style="font-size: 90%">
  516. Enter search terms or a module, class or function name.
  517. </p>
  518. </div>
  519. <script type="text/javascript">$('#searchbox').show(0);</script>
  520. </div>
  521. </div>
  522. <div class="clearer"></div>
  523. </div>
  524. <div class="related">
  525. <h3>Navigation</h3>
  526. <ul>
  527. <li class="right" style="margin-right: 10px">
  528. <a href="../genindex.html" title="General Index"
  529. >index</a></li>
  530. <li class="right" >
  531. <a href="../modindex.html" title="Global Module Index"
  532. >modules</a> |</li>
  533. <li class="right" >
  534. <a href="celery.execute.html" title="Executing Tasks - celery.execute"
  535. >next</a> |</li>
  536. <li class="right" >
  537. <a href="index.html" title="Module API Reference"
  538. >previous</a> |</li>
  539. <li><a href="../index.html">Celery v0.4.13 (stable) documentation</a> &raquo;</li>
  540. <li><a href="index.html" >Module API Reference</a> &raquo;</li>
  541. </ul>
  542. </div>
  543. <div class="footer">
  544. &copy; Copyright 2009, Ask Solem.
  545. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
  546. </div>
  547. </body>
  548. </html>