
[英]How can I use peewee db_url.connect() to generate a connection with RetryOperationalError?
[英]Is connect_timeout a valid URL parameter acquiring a connection via Peewee's playhouse.db_url.connect?
我将 Peewee 用作 ORM 并使用Playhouse 扩展 db_url.connect连接到 Postgres 数据库(psycopg2)。 我的 URL 是香草postgresql://username:pass@host:port/dbname?options=...
所以目前不使用池或任何先进的东西。
有时当我调用connect
时,它会挂起很长时间并且不会回来。 因此,我将参数&connect_timeout=3
附加到我的数据库 URL 中,这意味着尝试最多 3 秒并通过超时快速失败,而不是永远挂起。 但是,我不确定 Peewee/Playhouse/Psycopg2 是否支持这个论点......有人可以确认吗?
此外,我在哪里可以找到 Peewee/Playhouse/Psycopg2 支持的所有 URL 参数?
psycopg2 doc 依次链接到支持参数的 libpq 列表:
https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS
peewee 和 psycopg2 都支持connect_timeout
:
>>> from playhouse.db_url import *
>>> db = connect('postgresql://../peewee_test?connect_timeout=3')
>>> conn = db.connection()
>>> conn.get_dsn_parameters()
{'user': 'postgres',
'passfile': '...',
'channel_binding': 'prefer',
'connect_timeout': '3', # Our connect timeout
'dbname': 'peewee_test',
'host': 'localhost',
'port': '5432',
...}
Peewee 将参数(包括connect_timeout
等任意参数)传递回 DB-API Connection class 的构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.