python - 我怎样才能做一个多线程扭曲的python

标签 python multithreading twisted python-multithreading

我有一个问题困扰了我很长时间,目前我正在研究一个从外部操作请求的守护进程。它就像一个服务器客户端。在这个项目中,我使用了一个 Twisted Python 框架,我成功地构建了一个非多线程服务器,它可以工作!但是现在,我需要同时服务好几个客户。我不知道如何在 Twisted Framework 中执行此操作。我尝试了所有我知道的...

请帮助我:|

class Server(protocol.Protocol, protocol.Factory):

def buildProtocol(self, addr):                               
    if addr.host in ipList:
        log.msg("Connected from IP: " + addr.host)
        return self
    return None

def dataReceived(self, data):
    reactor.callFromThread(self.actionCreator(data))

def actionCreator(self, data):
    jsonData = json.loads(data)
    if not jsonData["action"]:
        log.msg("Incorrect data from IP: " + self.transport.getPeer().host + " data: " + data)
        self.transport.write(json.dumps({'response' : '300'}))
    elif jsonData["action"] == 'echo':
        log.msg("Doing ask from IP: " + self.transport.getPeer().host)
        self.transport.write(json.dumps({'response' : '400', 'data' : {'status' : 'online'}}))
    elif jsonData["action"] == 'wget': 
        log.msg("Downloading file... for user - " + jsonData["user"])
        os.system("wget -q http://****************")
        self.transport.write(json.dumps({'response' : '400', 'data' : {'status' : 'downloaded'}}))
    else:
        log.msg("Incorrect data from IP: " + self.transport.getPeer().host + " data: " + data)
        self.transport.write(json.dumps({'response' : '300'}))


if __name__ == '__main__':
    try:
        log.msg("Running server...")
        context = ssl.DefaultOpenSSLContextFactory(certificate + "/server.key", certificate + "/server.crt")
        log.msg("Initiating a secure SSL connection...")
        reactor.listenSSL(config.getint(general, 'port'), Server(), context)
        log.msg("Waiting for connections...")

        reactor.run()  
    except KeyboardInterrupt:
        sys.exit()

最佳答案

您的服务器默认处理并发客户端 - 没有线程 - 作为 Twisted 遵循的编程模型的属性。

我在您的示例代码中没有看到任何使此无效的内容 - 如果您删除了使用线程的(中断的)尝试,则此服务器在为多个客户端提供服务时应该没有任何问题。

关于python - 我怎样才能做一个多线程扭曲的python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19213644/

相关文章:

python - 带有 Python 的 OpenCV 是否需要 X Windows?

python - Mypy 错误 "Need more than 2 values to unpack (3 expected)"尽管使用了不同元组的并集

interop - 如何在 Twisted 的 asyncioreactor 之上运行 asyncio 库代码?

python - 使用 Twisted 端点时可以设置 SSL 上下文选项吗?

python - 如何在 python 中绘制 k 距离图

python - 如何使用levenshtein函数删除pandas中的相似值

.net - 什么时候使用AutoResetEvent和ManualResetEvent代替Monitor.Wait()/Monitor.Pulse()?

java - 所有 ExecutorService 任务完成后程序不会立即终止

python - 如何将数据发送到正在运行的 python 线程?

node.js - zeroMQ vs node.js vs beanstalkd vs Twisted