faq.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  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>Frequently Asked Questions &mdash; Celery v0.6.0 (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.6.0 (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.6.0 (stable) documentation" href="index.html" />
  21. <link rel="next" title="Module API Reference" href="reference/index.html" />
  22. <link rel="prev" title="Tutorial: Creating a click counter using carrot and celery" href="tutorials/clickcounter.html" />
  23. </head>
  24. <body>
  25. <div class="related">
  26. <h3>Navigation</h3>
  27. <ul>
  28. <li class="right" style="margin-right: 10px">
  29. <a href="genindex.html" title="General Index"
  30. accesskey="I">index</a></li>
  31. <li class="right" >
  32. <a href="modindex.html" title="Global Module Index"
  33. accesskey="M">modules</a> |</li>
  34. <li class="right" >
  35. <a href="reference/index.html" title="Module API Reference"
  36. accesskey="N">next</a> |</li>
  37. <li class="right" >
  38. <a href="tutorials/clickcounter.html" title="Tutorial: Creating a click counter using carrot and celery"
  39. accesskey="P">previous</a> |</li>
  40. <li><a href="index.html">Celery v0.6.0 (stable) documentation</a> &raquo;</li>
  41. </ul>
  42. </div>
  43. <div class="document">
  44. <div class="documentwrapper">
  45. <div class="bodywrapper">
  46. <div class="body">
  47. <div class="section" id="frequently-asked-questions">
  48. <h1>Frequently Asked Questions<a class="headerlink" href="#frequently-asked-questions" title="Permalink to this headline">¶</a></h1>
  49. <div class="section" id="questions">
  50. <h2>Questions<a class="headerlink" href="#questions" title="Permalink to this headline">¶</a></h2>
  51. <div class="section" id="mysql-is-throwing-deadlock-errors-what-can-i-do">
  52. <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>
  53. <p><strong>Answer:</strong> MySQL has default isolation level set to <tt class="docutils literal"><span class="pre">REPEATABLE-READ</span></tt>,
  54. if you don&#8217;t really need that, set it to <tt class="docutils literal"><span class="pre">READ-COMMITTED</span></tt>.
  55. You can do that by adding the following to your <tt class="docutils literal"><span class="pre">my.cnf</span></tt>:</p>
  56. <div class="highlight-python"><div class="highlight"><pre><span class="p">[</span><span class="n">mysqld</span><span class="p">]</span>
  57. <span class="n">transaction</span><span class="o">-</span><span class="n">isolation</span> <span class="o">=</span> <span class="n">READ</span><span class="o">-</span><span class="n">COMMITTED</span>
  58. </pre></div>
  59. </div>
  60. <p>For more information about InnoDBs transaction model see <a class="reference external" href="http://dev.mysql.com/doc/refman/5.1/en/innodb-transaction-model.html">MySQL - The InnoDB
  61. Transaction Model and Locking</a> in the MySQL user manual.</p>
  62. <p>(Thanks to Honza Kral and Anton Tsigularov for this solution)</p>
  63. </div>
  64. <div class="section" id="celeryd-is-not-doing-anything-just-hanging">
  65. <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>
  66. <dl class="docutils">
  67. <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>
  68. <dd>or <cite>Why is Task.delay/apply* just hanging?</cite>.</dd>
  69. </dl>
  70. </div>
  71. <div class="section" id="why-is-task-delay-apply-just-hanging">
  72. <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>
  73. <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
  74. AMQP server, so make sure you are able to access the configured vhost using
  75. the user and password.</p>
  76. </div>
  77. <div class="section" id="why-won-t-celeryd-run-on-freebsd">
  78. <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>
  79. <p><strong>Answer:</strong> multiprocessing.Pool requires a working POSIX semaphore
  80. implementation which isn&#8217;t enabled in FreeBSD by default. You have to enable
  81. POSIX semaphores in the kernel and manually recompile multiprocessing.</p>
  82. </div>
  83. <div class="section" id="i-m-having-integrityerror-duplicate-key-errors-why">
  84. <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>
  85. <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>.
  86. Thanks to howsthedotcom.</p>
  87. </div>
  88. <div class="section" id="why-won-t-my-task-run">
  89. <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>
  90. <p><strong>Answer:</strong> Did you register the task in the applications <tt class="docutils literal"><span class="pre">tasks.py</span></tt> module?
  91. (or in some other module Django loads by default, like <tt class="docutils literal"><span class="pre">models.py</span></tt>?).
  92. Also there might be syntax errors preventing the tasks module being imported.</p>
  93. <p>You can find out if the celery daemon is able to run the task by executing the
  94. task manually:</p>
  95. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">myapp.tasks</span> <span class="kn">import</span> <span class="n">MyPeriodicTask</span>
  96. <span class="gp">&gt;&gt;&gt; </span><span class="n">MyPeriodicTask</span><span class="o">.</span><span class="n">delay</span><span class="p">()</span>
  97. </pre></div>
  98. </div>
  99. <p>Watch celery daemons logfile (or output if not running as a daemon), to see
  100. if it&#8217;s able to find the task, or if some other error is happening.</p>
  101. </div>
  102. <div class="section" id="why-won-t-my-periodic-task-run">
  103. <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>
  104. <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>
  105. </div>
  106. <div class="section" id="how-do-i-discard-all-waiting-tasks">
  107. <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>
  108. <p><strong>Answer:</strong> Use <tt class="docutils literal"><span class="pre">celery.task.discard_all()</span></tt>, like this:</p>
  109. <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>
  110. <span class="gp">&gt;&gt;&gt; </span><span class="n">discard_all</span><span class="p">()</span>
  111. <span class="go">1753</span>
  112. </pre></div>
  113. </div>
  114. <p>The number <tt class="docutils literal"><span class="pre">1753</span></tt> is the number of messages deleted.</p>
  115. <p>You can also start celeryd with the <tt class="docutils literal"><span class="pre">--discard</span></tt> argument which will
  116. accomplish the same thing.</p>
  117. </div>
  118. <div class="section" id="i-ve-discarded-messages-but-there-are-still-messages-left-in-the-queue">
  119. <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>
  120. <p><strong>Answer:</strong> Tasks are acknowledged (removed from the queue) as soon
  121. as they are actually executed. After the worker has received a task, it will
  122. take some time until it is actually executed, especially if there are a lot
  123. of tasks already waiting for execution. Messages that are not acknowledged are
  124. hold on to by the worker until it closes the connection to the broker (AMQP
  125. server). When that connection is closed (e.g because the worker was stopped)
  126. the tasks will be re-sent by the broker to the next available worker (or the
  127. same worker when it has been restarted), so to properly purge the queue of
  128. waiting tasks you have to stop all the workers, and then discard the tasks
  129. using <tt class="docutils literal"><span class="pre">discard_all</span></tt>.</p>
  130. </div>
  131. <div class="section" id="can-i-use-celery-with-activemq-stomp">
  132. <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>
  133. <p><strong>Answer</strong>: Yes. But this is very experimental for now.</p>
  134. <p>First you have to use the <tt class="docutils literal"><span class="pre">master</span></tt> branch of <tt class="docutils literal"><span class="pre">celery</span></tt>:</p>
  135. <div class="highlight-python"><pre>$ git clone git://github.com/ask/celery.git
  136. $ cd celery
  137. $ sudo python setup.py install
  138. $ cd ..</pre>
  139. </div>
  140. <p>Then you need to install the <tt class="docutils literal"><span class="pre">stompbackend</span></tt> branch of <tt class="docutils literal"><span class="pre">carrot</span></tt>:</p>
  141. <blockquote>
  142. $ git clone git://github.com/ask/carrot.git
  143. $ cd carrot
  144. $ git checkout stompbackend
  145. $ sudo python setup.py install
  146. $ cd ..</blockquote>
  147. <p>And my fork of <tt class="docutils literal"><span class="pre">python-stomp</span></tt> which adds non-blocking support:</p>
  148. <div class="highlight-python"><pre>$ hg clone http://bitbucket.org/asksol/python-stomp/
  149. $ cd python-stomp
  150. $ sudo python setup.py install
  151. $ cd ..</pre>
  152. </div>
  153. <p>In this example we will use a queue called <tt class="docutils literal"><span class="pre">celery</span></tt> which we created in
  154. the ActiveMQ web admin interface.</p>
  155. <p><strong>Note</strong>: For ActiveMQ the queue name has to have <tt class="docutils literal"><span class="pre">&quot;/queue/&quot;</span></tt> prepended to
  156. it. i.e. the queue <tt class="docutils literal"><span class="pre">celery</span></tt> becomes <tt class="docutils literal"><span class="pre">/queue/celery</span></tt>.</p>
  157. <p>Since a STOMP queue is a single named entity and it doesn&#8217;t have the
  158. routing capabilities of AMQP you need to set both the <tt class="docutils literal"><span class="pre">queue</span></tt>, and
  159. <tt class="docutils literal"><span class="pre">exchange</span></tt> settings to your queue name. This is a minor inconvenience since
  160. carrot needs to maintain the same interface for both AMQP and STOMP (obviously
  161. the one with the most capabilities won).</p>
  162. <p>Use the following specific settings in your <tt class="docutils literal"><span class="pre">settings.py</span></tt>:</p>
  163. <div class="highlight-python"><div class="highlight"><pre><span class="c"># Makes python-stomp the default backend for carrot.</span>
  164. <span class="n">CARROT_BACKEND</span> <span class="o">=</span> <span class="s">&quot;pystomp&quot;</span>
  165. <span class="c"># STOMP hostname and port settings.</span>
  166. <span class="n">AMQP_HOST</span> <span class="o">=</span> <span class="s">&quot;localhost&quot;</span>
  167. <span class="n">AMQP_PORT</span> <span class="o">=</span> <span class="mf">61613</span>
  168. <span class="c"># The queue name to use (both queue and exchange must be set to the</span>
  169. <span class="c"># same queue name when using STOMP!!!)</span>
  170. <span class="n">CELERY_AMQP_CONSUMER_QUEUE</span> <span class="o">=</span> <span class="s">&quot;/queue/celery&quot;</span>
  171. <span class="n">CELERY_AMQP_EXCHANGE</span> <span class="o">=</span> <span class="s">&quot;/queue/celery&quot;</span>
  172. </pre></div>
  173. </div>
  174. <p>Now you can go on reading the tutorial in the README, ignoring any AMQP
  175. specific options.</p>
  176. </div>
  177. <div class="section" id="which-features-are-not-supported-when-using-stomp">
  178. <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>
  179. <p>This is a (possible incomplete) list of features not available when
  180. using the STOMP backend:</p>
  181. <ul class="simple">
  182. <li>routing keys</li>
  183. <li>exchange types (direct, topic, headers, etc)</li>
  184. <li>immediate</li>
  185. <li>mandatory</li>
  186. </ul>
  187. </div>
  188. <div class="section" id="can-i-send-some-tasks-to-only-some-servers">
  189. <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>
  190. <p><strong>Answer:</strong> As of now there is only one use-case that works like this,
  191. 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>,
  192. 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
  193. handle more than one routing_key, but this is coming in a later release.</p>
  194. <p>Say you have two servers, <tt class="docutils literal"><span class="pre">x</span></tt>, and <tt class="docutils literal"><span class="pre">y</span></tt> that handles regular tasks,
  195. and one server <tt class="docutils literal"><span class="pre">z</span></tt>, that only handles feed related tasks, you can use this
  196. configuration:</p>
  197. <blockquote>
  198. <ul class="simple">
  199. <li>Servers <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>: settings.py:</li>
  200. </ul>
  201. <div class="highlight-python"><div class="highlight"><pre><span class="n">AMQP_SERVER</span> <span class="o">=</span> <span class="s">&quot;rabbit&quot;</span>
  202. <span class="n">AMQP_PORT</span> <span class="o">=</span> <span class="mf">5678</span>
  203. <span class="n">AMQP_USER</span> <span class="o">=</span> <span class="s">&quot;myapp&quot;</span>
  204. <span class="n">AMQP_PASSWORD</span> <span class="o">=</span> <span class="s">&quot;secret&quot;</span>
  205. <span class="n">AMQP_VHOST</span> <span class="o">=</span> <span class="s">&quot;myapp&quot;</span>
  206. <span class="n">CELERY_AMQP_CONSUMER_QUEUE</span> <span class="o">=</span> <span class="s">&quot;regular_tasks&quot;</span>
  207. <span class="n">CELERY_AMQP_EXCHANGE</span> <span class="o">=</span> <span class="s">&quot;tasks&quot;</span>
  208. <span class="n">CELERY_AMQP_PUBLISHER_ROUTING_KEY</span> <span class="o">=</span> <span class="s">&quot;task.regular&quot;</span>
  209. <span class="n">CELERY_AMQP_CONSUMER_ROUTING_KEY</span> <span class="o">=</span> <span class="s">&quot;task.#&quot;</span>
  210. <span class="n">CELERY_AMQP_EXCHANGE_TYPE</span> <span class="o">=</span> <span class="s">&quot;topic&quot;</span>
  211. </pre></div>
  212. </div>
  213. <ul class="simple">
  214. <li>Server <tt class="docutils literal"><span class="pre">z</span></tt>: settings.py:</li>
  215. </ul>
  216. <div class="highlight-python"><div class="highlight"><pre><span class="n">AMQP_SERVER</span> <span class="o">=</span> <span class="s">&quot;rabbit&quot;</span>
  217. <span class="n">AMQP_PORT</span> <span class="o">=</span> <span class="mf">5678</span>
  218. <span class="n">AMQP_USER</span> <span class="o">=</span> <span class="s">&quot;myapp&quot;</span>
  219. <span class="n">AMQP_PASSWORD</span> <span class="o">=</span> <span class="s">&quot;secret&quot;</span>
  220. <span class="n">AMQP_VHOST</span> <span class="o">=</span> <span class="s">&quot;myapp&quot;</span>
  221. <span class="n">CELERY_AMQP_EXCHANGE</span> <span class="o">=</span> <span class="s">&quot;tasks&quot;</span>
  222. <span class="n">CELERY_AMQP_PUBLISHER_ROUTING_KEY</span> <span class="o">=</span> <span class="s">&quot;task.regular&quot;</span>
  223. <span class="n">CELERY_AMQP_EXCHANGE_TYPE</span> <span class="o">=</span> <span class="s">&quot;topic&quot;</span>
  224. <span class="c"># This is the settings different for this server:</span>
  225. <span class="n">CELERY_AMQP_CONSUMER_QUEUE</span> <span class="o">=</span> <span class="s">&quot;feed_tasks&quot;</span>
  226. <span class="n">CELERY_AMQP_CONSUMER_ROUTING_KEY</span> <span class="o">=</span> <span class="s">&quot;feed.#&quot;</span>
  227. </pre></div>
  228. </div>
  229. </blockquote>
  230. <p>Now to make a Task run on the <tt class="docutils literal"><span class="pre">z</span></tt> server you need to set its
  231. <tt class="docutils literal"><span class="pre">routing_key</span></tt> attribute so it starts with the words <tt class="docutils literal"><span class="pre">&quot;task.feed.&quot;</span></tt>:</p>
  232. <div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">feedaggregator.models</span> <span class="kn">import</span> <span class="n">Feed</span>
  233. <span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">Task</span>
  234. <span class="k">class</span> <span class="nc">FeedImportTask</span><span class="p">(</span><span class="n">Task</span><span class="p">):</span>
  235. <span class="n">routing_key</span> <span class="o">=</span> <span class="s">&quot;feed.importer&quot;</span>
  236. <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">feed_url</span><span class="p">):</span>
  237. <span class="c"># something importing the feed</span>
  238. <span class="n">Feed</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">import_feed</span><span class="p">(</span><span class="n">feed_url</span><span class="p">)</span>
  239. </pre></div>
  240. </div>
  241. <p>You can also override this using the <tt class="docutils literal"><span class="pre">routing_key</span></tt> argument to
  242. <tt class="xref docutils literal"><span class="pre">celery.task.apply_async()</span></tt>:</p>
  243. <div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">celery.task</span> <span class="kn">import</span> <span class="n">apply_async</span>
  244. <span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">myapp.tasks</span> <span class="kn">import</span> <span class="n">RefreshFeedTask</span>
  245. <span class="gp">&gt;&gt;&gt; </span><span class="n">apply_async</span><span class="p">(</span><span class="n">RefreshFeedTask</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="s">&quot;http://cnn.com/rss&quot;</span><span class="p">],</span>
  246. <span class="gp">... </span> <span class="n">routing_key</span><span class="o">=</span><span class="s">&quot;feed.importer&quot;</span><span class="p">)</span>
  247. </pre></div>
  248. </div>
  249. </div>
  250. </div>
  251. </div>
  252. </div>
  253. </div>
  254. </div>
  255. <div class="sphinxsidebar">
  256. <div class="sphinxsidebarwrapper">
  257. <h3><a href="index.html">Table Of Contents</a></h3>
  258. <ul>
  259. <li><a class="reference external" href="">Frequently Asked Questions</a><ul>
  260. <li><a class="reference external" href="#questions">Questions</a><ul>
  261. <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>
  262. <li><a class="reference external" href="#celeryd-is-not-doing-anything-just-hanging">celeryd is not doing anything, just hanging</a></li>
  263. <li><a class="reference external" href="#why-is-task-delay-apply-just-hanging">Why is Task.delay/apply* just hanging?`</a></li>
  264. <li><a class="reference external" href="#why-won-t-celeryd-run-on-freebsd">Why won&#8217;t celeryd run on FreeBSD?</a></li>
  265. <li><a class="reference external" href="#i-m-having-integrityerror-duplicate-key-errors-why">I&#8217;m having <tt class="docutils literal"><span class="pre">IntegrityError:</span> <span class="pre">Duplicate</span> <span class="pre">Key</span></tt> errors. Why?</a></li>
  266. <li><a class="reference external" href="#why-won-t-my-task-run">Why won&#8217;t my Task run?</a></li>
  267. <li><a class="reference external" href="#why-won-t-my-periodic-task-run">Why won&#8217;t my Periodic Task run?</a></li>
  268. <li><a class="reference external" href="#how-do-i-discard-all-waiting-tasks">How do I discard all waiting tasks?</a></li>
  269. <li><a class="reference external" href="#i-ve-discarded-messages-but-there-are-still-messages-left-in-the-queue">I&#8217;ve discarded messages, but there are still messages left in the queue?</a></li>
  270. <li><a class="reference external" href="#can-i-use-celery-with-activemq-stomp">Can I use celery with ActiveMQ/Stomp?</a></li>
  271. <li><a class="reference external" href="#which-features-are-not-supported-when-using-stomp">Which features are not supported when using STOMP?</a></li>
  272. <li><a class="reference external" href="#can-i-send-some-tasks-to-only-some-servers">Can I send some tasks to only some servers?</a></li>
  273. </ul>
  274. </li>
  275. </ul>
  276. </li>
  277. </ul>
  278. <h4>Previous topic</h4>
  279. <p class="topless"><a href="tutorials/clickcounter.html"
  280. title="previous chapter">Tutorial: Creating a click counter using carrot and celery</a></p>
  281. <h4>Next topic</h4>
  282. <p class="topless"><a href="reference/index.html"
  283. title="next chapter">Module API Reference</a></p>
  284. <h3>This Page</h3>
  285. <ul class="this-page-menu">
  286. <li><a href="sources/faq.txt"
  287. rel="nofollow">Show Source</a></li>
  288. </ul>
  289. <div id="searchbox" style="display: none">
  290. <h3>Quick search</h3>
  291. <form class="search" action="search.html" method="get">
  292. <input type="text" name="q" size="18" />
  293. <input type="submit" value="Go" />
  294. <input type="hidden" name="check_keywords" value="yes" />
  295. <input type="hidden" name="area" value="default" />
  296. </form>
  297. <p class="searchtip" style="font-size: 90%">
  298. Enter search terms or a module, class or function name.
  299. </p>
  300. </div>
  301. <script type="text/javascript">$('#searchbox').show(0);</script>
  302. </div>
  303. </div>
  304. <div class="clearer"></div>
  305. </div>
  306. <div class="related">
  307. <h3>Navigation</h3>
  308. <ul>
  309. <li class="right" style="margin-right: 10px">
  310. <a href="genindex.html" title="General Index"
  311. >index</a></li>
  312. <li class="right" >
  313. <a href="modindex.html" title="Global Module Index"
  314. >modules</a> |</li>
  315. <li class="right" >
  316. <a href="reference/index.html" title="Module API Reference"
  317. >next</a> |</li>
  318. <li class="right" >
  319. <a href="tutorials/clickcounter.html" title="Tutorial: Creating a click counter using carrot and celery"
  320. >previous</a> |</li>
  321. <li><a href="index.html">Celery v0.6.0 (stable) documentation</a> &raquo;</li>
  322. </ul>
  323. </div>
  324. <div class="footer">
  325. &copy; Copyright 2009, Ask Solem.
  326. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2.
  327. </div>
  328. </body>
  329. </html>