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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 前缀索引和覆盖索引

    前缀索引和覆盖索引前缀索引当索引的字符串列很大时,创建的索引也就变得很大,为了减小索引体积,提高索引的扫描速度,就用索引的前部分字串索引,这样索引占用的空间就会大大减少,并且索引的选择性也不会降低很多。而且是对BLOB和TEXT列进行索引,或者非常长的VARCHAR列,就必须使用前缀索引,因为MySQL不允许索引它们的全部长度。使用:列的前缀的长度选择很重要,又要节约索引空间,又要保证前缀索引的选择性要和…

    2022年5月24日
    47
  • jrebel 无效无法更换lisence

    jrebel 无效无法更换lisence

    2020年11月19日
    252
  • 谷歌地球手机版2021登不上服务器_谷歌地球连不上服务器是怎么回事

    谷歌地球手机版2021登不上服务器_谷歌地球连不上服务器是怎么回事1、安装运行谷歌地球专业版(GoogleEarthProv7.3)。2、安装运行国家法律允许使用的VPN软件。3、首次运行谷歌地球,需要点击“文件一登录服务器”,如果软件界面显示黑屏。4、选择“帮助一启动修复工具”。5、先关闭谷歌地球软件,保留“修复Google地球界面”不要关闭。6、选择“恢复默认设置”,窗口不要关闭。7、在次运行谷歌地球软件,点击“文件一一登录服务器”,稍等几秒钟熟悉的地球界面出来后,谷歌地球软件即可正常使用。如果谷歌地球软件无法运行,请在wi

    2026年1月25日
    6
  • Jmeter监控服务器性能「建议收藏」

    Jmeter监控服务器性能「建议收藏」JMeter是一款压力测试工具,我们也可以用它来监控服务器资源使用情况。JMeter正常自带可以通过Tomcat的/manager/status来监控服务资源使用情况。这种情况只能监控Tomcat支持的资源使用部分。本文主要来说一下如何通过JMeter插件来监控服务器CPU、内存、磁盘、网络等相关资源。JMeter插件网址:http://jmeter-plugins.org/Perf

    2022年10月19日
    2
  • VMware——VMware Tools的介绍及安装方法

    VMware——VMware Tools的介绍及安装方法VMware——VMwareTools的介绍及安装方法一、VMwareTools的作用二、VMwareTools的安装步骤参考文章一、VMwareTools的作用1.最大的好处是可以直接把windows界面的文件拖进linux虚拟机内。2.鼠标可以直接从虚拟机移动到windows等等好处。二、VMwareTools的安装步骤首先把linux虚拟机关机或退出,然后点击“编辑虚拟机设置”。点击CD/DVD,选择使用物理驱动器–自动检测。运行虚拟机虚拟机-安装vm

    2022年5月10日
    55
  • 【SpringBoot】19、SpringBoot中实现启动任务

    【SpringBoot】19、SpringBoot中实现启动任务我们在项目中会用到项目启动任务,即项目在启动的时候需要做的一些事,例如:数据初始化、获取第三方数据等等,那么如何在SpringBoot中实现启动任务,一起来看看吧SpringBoot中提供了两种项目启动方案,CommandLineRunner和ApplicationRunner一、CommandLineRunner使用CommandLineRunner,需要自定义一个类区实现CommandLineRunner接口,例如:importorg.springframework.boot.

    2022年9月26日
    3

发表回复

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

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