Add support for connector factory in connect args#1313
Open
enocom wants to merge 1 commit intoMagicStack:masterfrom
Open
Add support for connector factory in connect args#1313enocom wants to merge 1 commit intoMagicStack:masterfrom
enocom wants to merge 1 commit intoMagicStack:masterfrom
Conversation
This commit adds support for providing a connector factory, a callable
that provides full control over how the network connection to the
PostgreSQL server is established. When specified, this factory replaces
the default connection logic. The callable receives the following
arguments:
- *proto_factory* - a callable that returns the asyncpg protocol
instance
- *host* - the target hostname (positional)
- *port* - the target port (positional)
- *loop* - the event loop (keyword argument)
- *ssl* - the SSL context, or ``None`` (keyword argument)
The callable must return an awaitable that resolves to a
`(transport, protocol)` tuple, compatible with
`asyncio.loop.create_connection`.
This is useful for scenarios such as connecting through a proxy,
establishing an SSH tunnel, or performing custom socket setup
before the PostgreSQL protocol begins.
Usage looks like this:
```
async def my_connector(proto_factory, host, port, *, loop, ssl):
tunnel_sock = await open_ssh_tunnel(host, port)
return await loop.create_connection(
proto_factory, sock=tunnel_sock, ssl=ssl)
conn = await asyncpg.connect(
connector_factory=my_connector,
host='db.example.com',
user='postgres',
)
```
Fixes MagicStack#1054.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This commit adds support for providing a connector factory, a callable that provides full control over how the network connection to the PostgreSQL server is established. When specified, this factory replaces the default connection logic. The callable receives the following arguments:
None(keyword argument)The callable must return an awaitable that resolves to a
(transport, protocol)tuple, compatible withasyncio.loop.create_connection.This is useful for scenarios such as connecting through a proxy, establishing an SSH tunnel, or performing custom socket setup before the PostgreSQL protocol begins.
Usage looks like this:
Fixes #1054.