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中提供了一个示例脚本,显示了psycopg2与urlopen() 与 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中提供了一个示例脚本,显示了psycopg2与urlopen() 与 gevent 的并发使用。
uWSGI 绿色线程
Roberto De Ioris 正在编写uGreen ,一个在uWSGI 异步平台之上的绿色线程实现。
他使用psycopg2 async 支持和 psycopg2 green 支持执行了一些测试,并且在使用这两种异步样式的压力测试中报告了没有问题。
项目详情
psycogreen -1.0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c429845a8a49cf2f76b71265008760bcd7c7c77d80b806db4dc81116dbcd130d |
|
MD5 | 4f6f68ba5ffb1d6908160de3dacd3618 |
|
布莱克2-256 | eb724a7965cf54e341006ad74cdc72cd6572c789bc4f4e3fadc78672f1fbcfbd |