Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support a Pool before_connect callback to be used before a connection is created #1118

Open
jhinds opened this issue Feb 14, 2024 · 1 comment

Comments

@jhinds
Copy link

jhinds commented Feb 14, 2024

  • asyncpg version: 0.27.0
  • PostgreSQL version: 14
  • Do you use a PostgreSQL SaaS? If so, which? Can you reproduce
    the issue with a local PostgreSQL install?
    : Local
  • Python version: 3.9.9
  • Platform: macos
  • Do you use pgbouncer?: no
  • Did you install asyncpg with pip?: yes
  • If you built asyncpg locally, which version of Cython did you use?:
  • Can the issue be reproduced under both asyncio and
    uvloop?
    :

Hello! This is more of a feature request but I was wondering if there could be support for having a before_connect or similar callback when creating a Pool object that would run before a new connection is created? I see there is already an init param which is run after a connection is made.

Our use case is that we use dynamic credentials to access our postgres database and want to make sure that when we create a connection we are using credentials that are not stale. Is this something that makes sense for this project? There is similar functionality in other libraries such as sqlalchemy or pgx.

I was looking at how to do this as-is and there were two currently that I was exploring. One way would be to create our own Pool class which seems like a lot of maintainance for what we'd like to do. The other looked at creating a subclass and overriding the acquire and using set_connect_args but that would run every time we get a connection from a pool which would be wasteful as opposed to just when the creation happens.

@jhinds jhinds changed the title Support a before_connect callback to be used before a connection is created Support a Pool before_connect callback to be used before a connection is created Feb 14, 2024
@elprans
Copy link
Member

elprans commented Feb 14, 2024

I think it makes sense to provide a way to pass a connection factory. E.g. a connector=coro or connection_factory=coro that should return an instance of asyncpg.Connection. I would accept a PR along these lines if you make one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants