Twisted application中TCPClient的使用

Twisted application中TCPClient的使用

一般,在Twisted中使用Application的方式启动程序,是这样做:

 

折叠
展开
复制代码
    1. pop_service = internet.TCPServer(…,…)
  • popService = service.MultiService()
  • pop_service.setServiceParent(popService)
  • application= service.Application(‘popqueueservice’)
  • popService.setServiceParent(application)

 

 

通过setServiceParent来把某一个服务运行在application中

如果程序中我们需要生成很多TCPClient对象,去做其它的很多事情,那么我们不能这么做:

 

折叠
展开
复制代码
    1. op_service = internet.TCPClient(popserver,popport,f)
  • pop_service.setServiceParent(popService)

 

 

这样做是有很大问题的,因为每一个client的请求都被加入到了application中去运行

即使client执行完毕,也不会去释放自己对应的Factory实例和Protocol实例

长时间会造成内存中有很多这样的实例对象,内存不断增加,最后内存溢出…

这样的内存泄露,不太好定位,我之前检查了程序的各个地方,把能释放的资源都给释放了

唯独没有考虑到这个地方,最后使用了meliae工具,才定位到这个地方

然后这么修改的:

 

折叠
展开
复制代码
    1. pop_service.startService()
  • f.deferred.addCallback(handleEnd,id,pop_service)
  • 。。。。。。
  • #在每个client执行完毕后的deffer中调用了
  • s.stopService()

 

 

这样修改后,观察了几天,内存一直都比较稳定

转载于:https://www.cnblogs.com/zhangjing0502/archive/2012/05/24/2516415.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110402.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件著作权的代码要求_软件著作权 源代码

    软件著作权的代码要求_软件著作权 源代码软件著作权源代码文档格式要求分类:专利申请常见问题发表时间:2020-10-27软件著作权源代码文档格式要求是什么?软件著作是计算机软件,在申请保护时需要提交软件的源代码。源代码是有格式要求的,以文档形势提交,那么这份源代码文档格式要求是什么呢?需要注意哪些问题呢?本文你详细介绍。常见的源代码包含:C语言,VB,C++,JAVA,.NET等。提交的代码必须是源代码的开头载入程序,第30页必…

    2025年12月4日
    4
  • java中重定向和转发的区别_java中转发和重定向的使用区别

    java中重定向和转发的区别_java中转发和重定向的使用区别java重定向和转发的区别response.sendredirect("http://www.foo.com/path/error.html");重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所…

    2025年8月29日
    10
  • Autodesk 产品

    Autodesk 产品

    2021年8月13日
    61
  • 主键、唯一键与唯一索引的区别

    一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的。索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念。键代表创建来实施业务规则的完整性约束。索引和键的混淆通常是由于数据库使用索

    2021年12月24日
    48
  • c语言中的short是什么意思_c语言中short占几个字节

    c语言中的short是什么意思_c语言中short占几个字节Java中没有Int32,Int64,,只有int,short,longJava中int就代表Int32,short就代表Int16,long就代表Int64首先,几个基本的关键字:Int16=short,占2个字节.-32768~32767Int32=int,占4个字节.-2147483648~2147483647Int64=long,占8个字…

    2022年9月19日
    4
  • 公有云和私有云的区别 如何搭建云存储

    公有云和私有云的区别 如何搭建云存储云存储这样的隐喻或许感觉会有些夸张,但我们从中仍能感觉到和云相关的模糊的概念,对于这项技术的未来也是充满了未知,这对我们熟知的私有云存储也是一样。虽然市场上各种宣传的私有云存储都声称自己受益于在原有公有云上增加了防火墙,然而却有迹象表明私有云存储的名声却逐渐降到公共存储之下。说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此…

    2022年6月17日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号