1

我正在通过 Heroku 和 asyncpg 运行 PostgreSQL 数据库。我的网址是:postgres://user:pass@ec2-23-21-76-49.compute-1.amazonaws.com:5432/db_name

当我运行它时,我收到错误:

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)

这个数据库 url 肯定有效,当我使用 psycopg2 时它是有效的。就在我使用 asyncpg 时,我得到了这个错误。

我试过不使用连接池,这也不起作用。手动传递用户、密码等也不起作用。

class Database:
    """Accessing database functions"""
    def __init__(self, bot):
        self.bot = bot
        try:
            self.dsn = os.environ["DATABASE_URL"]
        except KeyError:
            database_file = open('database_secret.txt', mode='r')
            self.dsn = database_file.read()
            database_file.close()

        self.pool = None
        self.prefix_conn = None
        self.prefix_stmt = None
        print(self.dsn)

        lop = asyncio.get_event_loop()
        lop.run_until_complete(self.init())

    async def init(self):
        self.pool = await asyncpg.create_pool(self.dsn, ssl=True)
        # It fails here
4

1 回答 1

0

我遇到了这个问题,可能是因为我有一个新的 SSL 证书,以及一个非常旧版本的 Heroku 堆栈 (cedar-14)、非常旧的 python (2.7.9) 和非常旧的requests(2.5.1) 模块。

我升级了所有东西(heroku-16 堆栈、python 2.7.14、2.18.4 requests),但解决问题的可能是requests现在需要certifi模块。我的理解是该模块现在处理 SSL 验证。

于 2018-01-17T14:47:41.660 回答