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)
上一篇 2021年8月18日 下午1:00
下一篇 2021年8月18日 下午1:00


相关推荐

  • centos7配置ip地址

    关于centos7获取IP地址的方法主要有两种,1:动态获取ip;2:设置静态IP地址在配置网络之前我们先要知道centos的网卡名称是什么,centos7不再使用ifconfig命令,可通过命令IPaddr查看,如图,网卡名为ens32,是没有IP地址的1、动态获取ip(前提是你的路由器已经开启了DHCP)修改网卡配置文件vi/etc/sysconfig/netwo…

    2022年4月9日
    48
  • PHP如何集成阿里通义千问_使用SDK发起对话任务实现内容创作【入门】

    PHP如何集成阿里通义千问_使用SDK发起对话任务实现内容创作【入门】

    2026年3月13日
    1
  • Django(7)url命名的作用「建议收藏」

    Django(7)url命名的作用「建议收藏」前言为什么我们url需要命名呢?url命名的作用是什么?我们先来看一个案例案例我们先在一个Django项目中,创建2个App,前台front和后台cms,然后在各自app下创建urls.py文件

    2022年7月30日
    6
  • solt插槽

    solt插槽slot 插槽当组件中某一项需要单独定义 那么就应该使用 soltVue 实现了一套内容分发的 API 将 slot 元素作为承载分发内容的出口 单个 slot 匿名插槽 除非子组件模板包含至少一个 slot 插口 否则父组件的内容将会被丢弃 当子组件模板只有一个没有属性的 slot 时 父组件整个内容片段将插入到 slot 所在的 DOM 位置 并替换掉 slot slot

    2026年3月19日
    2
  • Java实现 LeetCode 385 迷你语法分析器

    Java实现 LeetCode 385 迷你语法分析器385 迷你语法分析器给定一个用字符串表示的整数的嵌套列表 实现一个解析它的语法分析器 列表中的每个元素只可能是整数或整数嵌套列表提示 你可以假定这些字符串都是格式良好的 字符串非空字符串不包含空格字符串只包含数字 0 9 示例 1 给定 s 324 你应该返回一个 NestedIntege 对象 其中只包含整数值 324 示例 2 给定 s

    2026年3月17日
    3
  • Trae的终端读取现在怎么这么难用了

    Trae的终端读取现在怎么这么难用了

    2026年3月13日
    1

发表回复

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

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