跳转到主要内容

psycopg2 与协程库的集成

项目描述

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

自发布2.2版以来,《Psycopg》提供了对协程的支持,但主模块是一个C扩展,不能被猴子补丁以成为协程友好型。相反,它公开了一个钩子,协程库可以使用它来安装一个与它们的调度器事件集成的函数。Psycopg将调用该函数,每当它执行可能阻塞的libpq调用时。psycogreen是一组“等待回调”,用于将Psycopg与不同的协程库集成。

安装

pip install psycogreen

模块 psycogreen.eventlet

目前,《Eventlet》支持Psycopg而不需要《psycogreen》,请参阅文档以获取补丁说明。

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

函数 psycogreen.eventlet.patch_psycopg()

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

函数 psycogreen.eventlet.eventlet_wait_callback(conn)

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

一个示例脚本,展示了使用Eventlet并发使用psycopg2urlopen()的情况,可以在tests/test_eventlet.py中找到。

模块 psycogreen.gevent

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

函数 psycogreen.gevent.patch_psycopg()

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

函数 psycogreen.gevent.gevent_wait_callback(conn)

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

一个示例脚本,展示了使用gevent并发使用psycopg2urlopen()的情况,可以在tests/test_gevent.py中找到。

uWSGI绿色线程

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

他使用psycopg2异步支持psycopg2绿色支持进行了一些测试,并报告说在他们的压力测试中,两种异步方式都没有问题。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

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

上传时间

由以下机构支持