By default celery uses subprocesses for the workers. If you configure concurrency=1
you should have 2 processes:
- the main process that consumes messages from the broker and manages the process poll
- 1 worker process
In general you will have 1 main process + N worker subprocesses, as many as stated in --concurrency=N
or CELERYD_CONCURRENCY=N
I'm not sure what happens with gevent workers.