Python中文
首页
教程
问答
标签
搜索
登录
注册
错误:无法启动新线程
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个运行以下配置的站点:</p> <p>Django+mod wsgi+apache</p> <p>在用户的一个请求中,我向另一个服务发送另一个HTTP请求,并通过python的httplib库解决这个问题。</p> <p>但有时这个服务不会得到太长的应答,httplib的超时也不起作用。所以我创建了线程,在这个线程中我向服务发送请求,并在20秒后加入它(20秒-是请求超时)。这就是它的工作原理:</p> <pre><code>class HttpGetTimeOut(threading.Thread): def __init__(self,**kwargs): self.config = kwargs self.resp_data = None self.exception = None super(HttpGetTimeOut,self).__init__() def run(self): h = httplib.HTTPSConnection(self.config['server']) h.connect() sended_data = self.config['sended_data'] h.putrequest("POST", self.config['path']) h.putheader("Content-Length", str(len(sended_data))) h.putheader("Content-Type", 'text/xml; charset="utf-8"') if 'base_auth' in self.config: base64string = base64.encodestring('%s:%s' % self.config['base_auth'])[:-1] h.putheader("Authorization", "Basic %s" % base64string) h.endheaders() try: h.send(sended_data) self.resp_data = h.getresponse() except httplib.HTTPException,e: self.exception = e except Exception,e: self.exception = e </code></pre> <p>像这样的。。。</p> <p>通过这个函数使用它:</p> <pre><code>getting = HttpGetTimeOut(**req_config) getting.start() getting.join(COOPERATION_TIMEOUT) if getting.isAlive(): #maybe need some block getting._Thread__stop() raise ValueError('Timeout') else: if getting.resp_data: r = getting.resp_data else: if getting.exception: raise ValueError('REquest Exception') else: raise ValueError('Undefined exception') </code></pre> <p>一切都很好,但有时我会发现一个例外:</p> <pre><code>error: can't start new thread </code></pre> <p>在开始新线程的行:</p> <pre><code>getting.start() </code></pre> <p>下一条也是最后一条回溯线是</p> <pre><code>File "/usr/lib/python2.5/threading.py", line 440, in start _start_new_thread(self.__bootstrap, ()) </code></pre> <p>答案是:发生了什么事?</p> <p>谢谢大家,对不起我纯正的英语。:)</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您启动的线程超过了系统可以处理的线程数。对于一个进程,可以激活的线程数是有限制的。</p> <p>应用程序启动线程的速度比线程运行到完成的速度快。如果你需要启动许多线程,你需要以一种更可控的方式来完成,我建议你使用一个线程池。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我是否正确构建了这个递归神经网络
6 回答
我是否正确理解acquire和realease是如何在python库“线程化”中工作的
8 回答
我是否正确理解Keras中的批次大小?
5 回答
我是否正确理解PyTorch的加法和乘法?
2 回答
我是否正确组织了我的Django应用程序?
6 回答
我是否正确计算执行时间?如果是这样,那么并行处理将花费更长的时间。这看起来很奇怪
1 回答
我是否每次创建新项目时都必须在PyCharm中安装numpy?(安装而不是导入)
9 回答
我是否每次运行jupyter笔记本时都必须重新启动内核?
9 回答
我是否用python安装了socks模块?
8 回答
我是否真的需要知道超过一种语言,如果我想要制作网页应用程序?
2 回答
我是否缺少spaCy柠檬化中的预处理功能?
4 回答
我是否缺少给定状态下操作的检查?
9 回答
我是否能够使用函数“count()”来查找密码中大写字母的数量((Python)
4 回答
我是否能够使用用户输入作为colorama模块中的颜色?
10 回答
我是否能够创建一个能够添加新Django.contrib.auth公司没有登录到管理面板的用户?
2 回答
我是否能够将来自多个不同网站的数据合并到一个csv文件中?
7 回答
我是否能够将目录路径转换为可以输入python hdf5数据表的内容?
8 回答
我是否能够等到一个对象被销毁,直到它创建另一个对象,然后在循环中运行time.sleep()
5 回答
我是否能够通过CBV创建用户实例,而不是首先创建表单?(Django)
6 回答
我是否要使它成为递归函数?
4 回答