-
Type: New Feature
-
Resolution: Won't Do
-
Priority: Minor - P4
-
None
-
Affects Version/s: None
-
Component/s: Docs
-
None
Externally-visible developer guide, part of the general sphinx-built documentation. Some topics:
- Architectural overview: client, topology, topology description, server, server description, pool, socketinfo, database, collection, and so on.
- List of specs we implement, what options we've chosen within the specs, how we test compliance.
- Supporting various Pythons single-source.
- Concurrency design: there's a big coarse lock in Topology (hold it when you read or write its data structures, drop it to do I/O) and Pool (same). Coarse locking actually improves performance in interpreters with a GIL.
- C extensions and mod_wsgi: http://emptysqua.re/blog/python-c-extensions-and-mod-wsgi/
- Never reintroduce thread locals.
- Complex structure of strong references and weakrefs used to prevent periodic executors from outliving MongoClients for very long.
- Related to that: atexit hooks to reduce errors during interpreter shutdown.
- Code style: PEPs 7, 8, 257, and 440, pylint. Comments and docstrings should begin with capital letters and end in periods.
- Exception hierarchy, general outline and how we balance specs with BC. network.py raises socket.error, pool.py translates to ConnectionFailure, the rest of the driver and users only deal with ConnectionFailure.
- is related to
-
DRIVERS-116 Driver projects should have developer guides
- Closed