建议Python发布/预订/调度模块?[关闭]
-
02-07-2019 - |
题
从 PyPubSub:
Pypubsub提供了一个简单的方法 你Python应用程序脱钩 其组成部分:部分的你 应用程序可以发布信息(与 或没有数据)和其他部分可以 订购/接收他们。此允许 消息"发件人"和消息 "听众"不知道每 其他:
- 一个不需要进口的其他
- 一个发件人并不需要知道
- "谁"得到的消息,
- 什么样的的听众会做数据,
- 甚至如果任何听众将获得的信息的数据。
- 同样,听众不需要担心那里的消息来源。
这是一个伟大的工具,用于实现 一个模型图控制架构 或任何类似的结构, 促进耦其组成部分。
似乎有相当多的Python模块,用于发布/签署浮动的网络,从PyPubSub, PyDispatcher 到简单的"家煮熟"的课程。
是否有具体的优点和缺点进行比较时,不同的不同模块?这套模块已经被基准和比较?
在此先感谢
解决方案
PyDispatcher 是大量使用在 Django 和它的工作完全出于我(与整个决社会,我猜).
我记得,有一些性能的问题:
- 参数的检查由PyDispatcher是缓慢的。
- 未使用的连接有不必要的开销。
据我所知这是非常不可能你会遇到这个问题在一个小型的中小型应用程序。因此,这些问题可能不关你的事。如果你认为你需要每一磅的性能(不成熟的优化是所有罪恶的根源!), 你可以看做的修改,以PyDispatcher在Django。
希望这会有所帮助。
其他提示
我最近仔细看了看 py-amqplib 作为一个最近我们成功的客户到一个RabbitMQ经纪人。后者的工具,是写在爱尔兰.
如果你想要分离应用程序。那么为什么几它的语言本身?考虑使用信息队列是中性语言,那么你真的得到了房间增长!
这就是说,最近我们成功需要努力了解和可能比你更愿意采取上如果你的应用程序。工作只是罚款。情况因人而异。
这里是一个较新的一项: https://github.com/shaunduncan/smokesignal. "smokesignal是一个简单的蟒蛇图书馆发送和接收信号。它提出了一些灵感来自django信号的框架,但是作为一个通用的变型。"例如:
from time import sleep
import smokesignal
@smokesignal.on('debug')
def verbose(val):
print "#", val
def main():
for i in range(100):
if i and i%10==0:
smokesignal.emit('debug', i)
sleep(.1)
main()
还有的图书馆通过PJ艾伯,RuleDispatch和峰项目,专门格子。我不知道他们的地位实际上但邮件列表是相当活跃。
我也有使用的部件从 Kamaelia项目 的英国广播公司。轴突是一个有趣的方法,但更多的组件比发行者-消费者的启发。嗯,其网站上是有点不up-to-date。有一个项目或2个在谷歌SoC2008年工作正在做。
不知道,如果它帮助:)
编辑:我刚刚发现 Py-通知 这是一个"非正统"的执行观察员的模式。它的大部分功能我需要我自己的工具。
事实上,PyPubSub似乎有点混乱管理项目(维基在SF是死的,该网站(另一Wiki)这就是联系在SF目前破碎)将足够的理由对我来说不要使用它。PyDispatcher有一个完整的网站,但是唯一的文件,他们似乎提供了一个API产生从文档字符串.没有交通邮寄名单上。一个不好的兆头!
作为迈克还提到,它完全可以选择的解决方案是独立的蟒蛇。现在不要误会我,我 爱情 蟒蛇,但仍,在这一领域可以作出意义上使用的一个框架,该框架是分离的程序语言。
我不是有经验的消息,但我计划要有一个看到的一些解决方案。迄今为止这两个(自由开放源)项目似乎最有希望的对我来说(巧合的是,两者都是Apache项目):
两者似乎是合理的成熟的项目,至少有一个远为文档和社区。我不能评论有关软件的质量虽然,正如我所说,我没有使用任何软件。
设备的船舶与客户的图书馆Python,但你也可以使用 py-amqplib.为说有 pyactivemq, 你可以用于连接或者通过踩(文本流向信息协议),或通过Openwire.