I have a site that runs with follow configuration: Django + mod-wsgi + apache In one of user's request, I send another HTTP request to another service, and solve this by httplib library of python. But sometimes this service don't get answer too long, and timeout for httplib doesn't work. So I creating thread, in this thread I send request to service, and join it after 20 sec (20 sec - is a timeout of request). This is how it works: 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 something like this... And use it by this function: 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') And all works fine, but sometime I start catching this exception: error: can't start new thread at the line of starting new thread: getting.start() and the next and the final line of traceback is File "/usr/lib/python2.5/threading.py", line 440, in start _start_new_thread(self.__bootstrap, ()) And the answer is: What's happen? Thank's for all, and sorry for my pure English. Continue reading...