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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • cubieboard开发板简介

    cubieboard开发板简介Cubieboard,简称Cb,是由珠海的Cubietech团队推出,跟业内有名的pcduino一样,Cubieboard是i基于珠海全志科技的A10/A20等系列处理器的开发板。Cubieboard初次生产是在2012年的8月8日,目前有三代产品,第一代是采用A10的基础版,其中有分8月8日生产的版本和9月9日生产的版本,第二代更换了双核处理器A20,并且经过测试可以稳定地运行在1.2Ghz上,

  • ajax写法_ajax一次请求多次响应

    ajax写法_ajax一次请求多次响应ajax—-js原生写法varxhr;functionrukou()//入口函数{xhr=getxhr();if(xhrnull){alert(“浏览器不支持!”);}varurl="";xhr.onreadystatechange=fanhui;xhr.open(“GET”,url,true);xhr.send(null);}functionfanhui…

  • encode和decode的区别_encoder和decoder

    encode和decode的区别_encoder和decoder从英文意思上看,encode和decode分别指编码和解码。在python中,Unicode类型是作为编码的基础类型,即:   decode        encodestr———>str(Unicode)———>str12>>>u=’中文’        #指定字符串类型对…

  • HDU1069_Monkey and Banana【LCS】

    HDU1069_Monkey and Banana【LCS】

  • CloudSim仿真流程研究(二)[通俗易懂]

    CloudSim仿真流程研究(二)[通俗易懂]org.cloudbus.cloudsim.examples.power.random里的例子IqrMc:publicclassIqrMc{ /** *Themainmethod. * *@paramargsthearguments *@throwsIOExceptionSignalsthatanI/Oexceptionhasocc…

    2022年10月13日
  • 传智健康day06 移动端开发-体检预约

    传智健康day06 移动端开发-体检预约1.移动端开发1.1移动端开发方式随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地。例如,我们可以使用手机购物、支付、打车、玩游戏、订酒店、购票等,以前只能通过PC端完成的事情,现在通过手机都能够实现,而且更加方便,而这些都需要移动端开发进行支持,那如何进行移动端开发呢?移动端开发主要有三种方式:1、基于手机API开发(原生APP)2、基于手机浏览器开发(移动web)3、混合开发(混合APP)1.1.1基于手机API开发手机端使用手

发表回复

您的电子邮箱地址不会被公开。

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