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并发使用psycopg2和urlopen()的情况,可以在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并发使用psycopg2和urlopen()的情况,可以在tests/test_gevent.py中找到。
uWSGI绿色线程
Roberto De Ioris正在编写uGreen,这是在uWSGI异步平台之上实现的绿色线程。
他使用psycopg2异步支持和psycopg2绿色支持进行了一些测试,并报告说在他们的压力测试中,两种异步方式都没有问题。
项目详情
psycogreen-1.0.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c429845a8a49cf2f76b71265008760bcd7c7c77d80b806db4dc81116dbcd130d |
|
MD5 | 4f6f68ba5ffb1d6908160de3dacd3618 |
|
BLAKE2b-256 | eb724a7965cf54e341006ad74cdc72cd6572c789bc4f4e3fadc78672f1fbcfbd |