title: Using both gevent (or eventlet) and prefork workers with Celery
body: <p>Within the Concurrency section of the Celery docs it states that:</p>
  
  <blockquote>
    <p>...mix of both Eventlet and prefork workers, and route tasks according to
    compatibility or what works best</p>
  </blockquote>
  
  <p>Source: <a href="http://celery.readthedocs.org/en/latest/userguide/concurrency/eventlet.html#concurrency-eventlet" rel="noreferrer">http://celery.readthedocs.org/en/latest/userguide/concurrency/eventlet.html#concurrency-eventlet</a></p>
  
  <p>This means that it's possible to have a worker use the gevent/eventlet pool implementation while another uses a prefork pool. </p>
  
  <p>The pool implementation can be specified when creating multiple workers with <code>celery multi</code>:</p>
  
  <pre><code>celery -A proj multi start 2 -P gevent -c 1000
  </code></pre>
  
  <p>This starts 2 gevent workers, but how can I can specify pool implementation on a per worker basis when using <code>celery multi</code>, so that one worker uses a gevent pool and the other uses prefork?</p>
  
  <p>The <code>celery multi</code> docs don't mention anything regarding this specific matter, and the source code (<code>celery.bin.multi</code>) didn't really show that this was possible (unless I misread/misunderstood the code).</p>