Add an asyncio.Protocol implementation for KMS

XMLWordPrintableJSON

    • None
    • Python Drivers
    • Not Needed
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?
    • None
    • None
    • None
    • None
    • None
    • None

      Context

      In the async API, our KMS requests still use raw sockets due to the inherent limitations of the core asyncio.Protocol. Writing a second Protocol specifically for KMS would allow us to remove the entire async socket networking layer, significantly reducing the amount of maintained code.

      Definition of done

      A one-week timeboxed proof-of-concept to attempt replacing our KMS socket code with an asyncio.Protocol version. This implementation should be concerned chiefly with functionality and completeness. Another key deliverable will be how much code can be cleanly refactored with the removal of all raw socket usage from the async API. A successful completion of this ticket would reveal how much additional work is needed for a production-ready implementation as well as the performance of raw sockets vs Protocols for KMS.

      Pitfalls

      asyncio.Protocol implementations are notoriously complicated to write. KMS performance should increase or remain static in the worst case after a successful Protocol is implemented.

              Assignee:
              Steve Silvester
              Reporter:
              Noah Stapp
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: