将基于python-twisted的代码迁移到scala:需要框架建议

7 投票
1 回答
987 浏览
提问于 2025-04-16 17:40

我正在尝试把一大堆用Python和Twisted写的代码移植到Scala上,现在想听听大家对选择什么框架组合的看法。

这个项目基本上是一个RPC(自定义的基于protobuf和xmlrpc)/HTTP服务器和客户端,它负责一些数据库的管理和数据转换,之后会把RPC请求发送给一些工作者,这部分不在这次重写的范围内。

作为实现RPC的网络输入输出基础,我选择了Netty。旧系统中的所有工作流程都是基于Twisted的Deferred,而我现在考虑用ChannelFuture直接替代,或者把它包裹在scalaz.Promise或akka.Future里面。

我想,问题的一部分是——有没有比手动处理回调更简单的方法?我觉得如果我选择这个方向,后面可以通过添加一些包装器和使用继续执行的方式来简化,但也许我一开始就需要用一些不同的东西?

我试着把工作流程放进actor模型里,但似乎和标准库的actor不太兼容。

谢谢。

更新:Finagle似乎和Twisted的模型很相似,或者说是意外地相似。twitter.util.Future看起来和Twisted的Deferred很像。所以我现在在用它。

更新2:我最开始移植的原因是静态类型和性能。

1 个回答

2

Finagle这个东西看起来和twisted很像,或者说是偶然之间有些相似。twitter.util.Future看起来也跟twisted里的Deferred很像。所以我现在在用它。

撰写回答