Skip to main content

psycopg2 与协程库的集成

项目描述

psycogreen包使 psycopg2 能够与协程库一起工作,在内部使用异步调用,但提供阻塞接口,以便常规代码无需修改即可运行

Psycopg从 2.2 版开始提供协程支持。因为主模块是一个 C 扩展,所以它不能通过猴子补丁变得对协程友好。相反,它公开了一个钩子,协程库可以使用该钩子来安装与其事件调度程序集成的函数。只要 Psycopg 执行可能阻塞的 libpq 调用,它就会调用该函数。 psycogreen是一组“等待回调”,可用于将 Psycopg 与不同的协程库集成。

安装

点安装 psycogreen

模块psycogreen.eventlet

Eventlet目前支持开箱即用的Psycopg ,不需要 psycogreen 。有关修补说明,请参阅文档

如果出于任何原因您想避免使用 Eventlet monkeypatching,您可以使用 psycogreen.eventlet.patch_psycopg()

函数psycogreen.eventlet.patch_psycopg()

在与 Eventlet 事件循环集成的 Psycopg 中启用异步处理。它是通过将eventlet_wait_callback()注册为 psycopg2 等待回调来执行的。

函数psycogreen.eventlet.eventlet_wait_callback(conn)

与 Eventlet 事件循环集成的等待回调。

tests/test_eventlet.py中提供了一个示例脚本,显示了psycopg2urlopen() 与 Eventlet 的并发使用。

模块psycogreen.gevent

为了将 psycopg2 与gevent异步使用,您可以使用 psycogreen.gevent.patch_psycopg()

函数psycogreen.gevent.patch_psycopg()

在与 gevent 事件循环集成的 Psycopg 中启用异步处理。它是通过将gevent_wait_callback()注册为 psycopg2 等待回调来执行的。

函数psycogreen.gevent.gevent_wait_callback(conn)

与 gevent 事件循环集成的等待回调。

tests/test_gevent.py中提供了一个示例脚本,显示了psycopg2urlopen() 与 gevent 的并发使用。

uWSGI 绿色线程

Roberto De Ioris 正在编写uGreen ,一个在uWSGI 异步平台之上的绿色线程实现。

他使用psycopg2 async 支持psycopg2 green 支持执行了一些测试,并且在使用这两种异步样式的压力测试中报告了没有问题。

项目详情


下载文件

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

源分布

psycogreen-1.0.2.tar.gz (5.4 kB 查看哈希

已上传 source