Python的Twisted库是观察者类型模式的最佳案例吗?

时间:2010-06-08 22:51:17

标签: python twisted

我正在开发一个系统,其中一个队列将填充数百万个项目

我需要一个不断从队列中读取项目的进程,然后将这些项目发送给注册的客户端。

我正在考虑使用twisted来实现这一点,让队列读取器成为一个在tcp端口上侦听的扭曲服务器,然后客户端可以在该端口上连接,当一个项目从队列中拉出时,服务器会将其写入所有客户端。

这听起来像扭曲的东西是理想的吗?有没有人知道那些可能做类似事情的示例代码?

3 个答案:

答案 0 :(得分:1)

Perspective Broker可能就是你要找的东西。如果您不了解PB,请将其视为XML-RPC,但更多。你可以调用远程过程(呃!),将大多数python对象传递给名字二。

根据您的情况,为客户提供PB。 Twisted Server可以调用远程doWork(myItem, myParameters)。 Twisted Server将是一个持久的进程,它会累积队列中的项目。如果您有数百万(甚至服务器数十)项目,请记住在发生崩溃时优雅地恢复。如何巧妙地将内容随时备份到磁盘上并在启动时阅读它?

答案 1 :(得分:1)

您可能想要考虑一个AMQP消息代理RabbitMQ。 AMQP是一种用于构建消息队列和路由系统的协议。

severalpythonclients用于连接AMQP经纪人。

答案 2 :(得分:0)

Twisted和PB非常适合这一点 - Stack上有很多好的参考资料:

Python twisted: where to start