GitHub - mongodb/motor: Motor - the async Python driver for MongoDB and Tornado or asyncio (original) (raw)

Motor

PyPI Version Python Versions Monthly Downloads Documentation Status

image

About

Motor is a full-featured, non-blocking MongoDBdriver for Python asyncio andTornado applications. Motor presents a coroutine-based API for non-blocking access to MongoDB.

"We use Motor in high throughput environments, processing tens of thousands of requests per second. It allows us to take full advantage of modern hardware, ensuring we utilise the entire capacity of our purchased CPUs. This helps us be more efficient with computing power, compute spend and minimises the environmental impact of our infrastructure as a result."

--David Mytton, Server Density

"We develop easy-to-use sensors and sensor systems with open source software to ensure every innovator, from school child to laboratory researcher, has the same opportunity to create. We integrate Motor into our software to guarantee massively scalable sensor systems for everyone."

--Ryan Smith, inXus Interactive

Support / Feedback

For issues with, questions about, or feedback for PyMongo, please look into our support channels. Please do not email any of the Motor developers directly with issues or questions - you're more likely to get an answer on theStackOverflow(using a "mongodb" tag).

Bugs / Feature Requests

Think you've found a bug? Want to see a new feature in Motor? Please open a case in our issue management tool, JIRA:

Bug reports in JIRA for all driver projects (i.e. MOTOR, CSHARP, JAVA) and the Core Server (i.e. SERVER) project are public.

How To Ask For Help

Please include all of the following information when opening an issue:

python -c "import sys; print(sys.version)"

python -c "import motor; print(motor.version)"

python -c "import pymongo; print(pymongo.version); print(pymongo.has_c())"

python -c "import tornado; print(tornado.version)"

Security Vulnerabilities

If you've identified a security vulnerability in a driver or any other MongoDB project, please report it according to the instructions here.

Installation

Motor can be installed with pip:

Dependencies

Motor works in all the environments officially supported by Tornado or by asyncio. It requires:

Optional dependencies:

Motor supports same optional dependencies as PyMongo. Required dependencies can be installed along with Motor.

GSSAPI authentication requires gssapi extra dependency. The correct dependency can be installed automatically along with Motor:

pip install "motor[gssapi]"

similarly,

MONGODB-AWS authentication requires aws extra dependency:

Support for mongodb+srv:// URIs requires srv extra dependency:

OCSP requires ocsp extra dependency:

pip install "motor[ocsp]"

Wire protocol compression with snappy requires snappy extra dependency:

pip install "motor[snappy]"

Wire protocol compression with zstandard requires zstd extra dependency:

pip install "motor[zstd]"

Client-Side Field Level Encryption requires encryption extra dependency:

pip install "motor[encryption]"

You can install all dependencies automatically with the following command:

pip install "motor[gssapi,aws,ocsp,snappy,srv,zstd,encryption]"

Seerequirementsfor details about compatibility.

Examples

See the examples on ReadTheDocs.

Documentation

Motor's documentation is onReadTheDocs.

Build the documentation with Python 3.9+. Installsphinx, Tornado, and aiohttp, and docd doc; make html.

Learning Resources

Testing

Run python setup.py test. Tests are located in the test/ directory.