1

我想使用协议在服务器/客户端之间发送数据:超过 65,535 字节限制大小的unicode(字符串)列表。处理限制大小问题的一个很好且干净的解决方案是实现生产者/消费者模式

不幸的是,我阅读了文档和示例,但找不到如何开始。对于小规模的传输数据,我的放大器实现效果很好。我在这里展示了我的代码的相关部分。

命令

class DataCommand(Command):
    response = [("data", ListOf(Unicode()))]
    errors = {
        KeyError: "KEY_ERROR",
        ValueError: "VALUE_ERROR",
    }    

服务器

class ProducerLocator(CommandLocator):
    def __init__(self,size,N):
        self.data = [id_generator(size=size) for x in range(N)]
    @DataCommand.responder
    def getData(self):
        return {'data':self.data}  ## don't work if is self.data > 64kB

客户

class Consumer:     
    d = connect()
    def getData(protocol):
        return protocol.callRemote(DataCommand)
    d.addCallback(getData) 

一些生成数据的代码(在上面的工厂构造函数中使用)

import string
import random
def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
    return ''.join(random.choice(chars) for _ in range(size))
4

0 回答 0