Threading model

Manila uses Python’s native threading for concurrency. All services (manila-share, manila-scheduler, manila-data) run under oslo.service’s threading backend.

The manila-api service should be deployed behind an external WSGI server such as uWSGI, gunicorn, or Apache mod_wsgi. The built-in eventlet-based WSGI server is deprecated. See Deploying the manila API for deployment examples.

Use time.sleep() and threading primitives from the standard library. The @utils.synchronized(...) decorator is available for protecting critical sections against races.

Legacy eventlet backend

The eventlet concurrency backend is deprecated and will be removed in a future release. If you need to force it for testing, set the environment variable before starting each service:

export OS_MANILA_DISABLE_EVENTLET_PATCHING=False

Unset the variable (or leave it unset) to use the default native threading backend.