扭曲的python请求/响应消息和大量二进制数据传输

2024-04-16 16:42:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python twisted实现一个服务器,它带有潜在的C#和ObjC客户机。我从LineReceiver开始,它对基本的消息传递很有效,但我无法找到更健壮的方法。对于以下要求有什么简单的解决方案吗?在

  • 响应和请求
    • 例如,发送消息获取状态,接收状态返回
  • 接收二进制数据传输(不平凡,但不大量-小于几兆字节)
    • 例如一个小png文件的字节数

对于第一个场景,AMP似乎是一个可行的解决方案,但可能无法处理数据传输场景的大小。在

我也研究过成熟的肥皂,但还没有找到一个足够好的例子来让我去做。在


Tags: 文件方法服务器消息客户机字节png状态
1条回答
网友
1楼 · 发布于 2024-04-16 16:42:40

我很喜欢安培。twisted.protocols.amp功能一般,并且相对容易测试(尽管关于如何测试用它编写的应用程序的文档很少)。在

AMP提供的命令/响应抽象非常舒适和熟悉(毕竟,我们生活在一个HTTP获胜的世界)。AMP避免了SOAP直接陷入的过度复杂的陷阱(似乎是为了复杂性)。但它并不是那么简单,你就不能用它来完成工作(就像LineReceiver最有可能是这样)。在

有一些中间步骤-例如,twisted.protocols.basic.Int32Receiver为您提供了一个更复杂的帧机制(32位长度的前缀,而不是神奇的字节结束的行)-但在我看来,AMP是协议的最佳首选。你可能会发现你想改用其他的东西(一个尺寸确实不适合所有人),但AMP是功能和简单性之间的最佳选择,似乎很适合广泛的应用。在

的确,在安培中有一些内置的长度限制。这是一个长期存在的痛点,只是在等待有现实世界需要的人来解决它。:)有一个经过深思熟虑的设计来提高这个限制(在不破坏协议兼容性的情况下!)。如果AMP在其他方面对您有吸引力,那么我鼓励您与Twisted development社区合作,找出如何帮助实现这一目标。;)

也总是可以选择使用AMP进行消息传递,并设置另一个通道(如HTTP)来传输更大的数据块。在

相关问题 更多 >