跳转到主要内容

帮助使用asyncpg与PostgreSQL的listen/notify

项目描述

asyncpg-listen

此库简化了与asyncpg一起使用listen/notify的操作

  1. 处理连接丢失
  2. 简化了来自多个通道的通知处理
  3. 为接收通知设置超时
  4. 根据ListenPolicy允许接收所有通知/仅接收最后一条通知。
import asyncio
import asyncpg
import asyncpg_listen


async def handle_notifications(notification: asyncpg_listen.NotificationOrTimeout) -> None:
    print(f"{notification} has been received")


async def main():
    listener = asyncpg_listen.NotificationListener(asyncpg_listen.connect_func(user="postgres"))
    listener_task = asyncio.create_task(
        listener.run(
            {"simple": handle_notifications},
            policy=asyncpg_listen.ListenPolicy.LAST,
            notification_timeout=5
        )
    )

    await asyncio.sleep(1)

    connection = await asyncpg.connect(user="postgres")
    try:
        for i in range(42):
            await connection.execute(f"NOTIFY simple, '{i}'")
    finally:
        await connection.close()

    await asyncio.sleep(1)

    listener_task.cancel()


asyncio.run(main())

v0.0.7 (2024-09-07)

v0.0.6 (2022-11-02)

v0.0.5 (2022-05-23)

v0.0.4 (2022-01-24)

v0.0.3 (2022-01-23)

v0.0.2 (2021-11-02)

v0.0.1 (2021-10-27)

  • 第一个版本

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

asyncpg-listen-0.0.7.tar.gz (7.5 kB 查看哈希值)

上传于

构建分发

asyncpg_listen-0.0.7-py3-none-any.whl (5.6 kB 查看哈希值)

上传于 Python 3

由以下支持