telepot
telepot copied to clipboard
Cannot recover from stack overflow.
hi.first of all sorry for my english. i don't khnow why i get this error. my bot work correctly but some times breaks by this error
`Fatal Python error: Cannot recover from stack overflow.
Current thread 0x00007fbb6d513700 (most recent call first): File "/usr/local/lib/python3.6/socket.py", line 655 in close File "/usr/local/lib/python3.6/http/client.py", line 403 in _close_conn File "/usr/local/lib/python3.6/http/client.py", line 553 in _get_chunk_left File "/usr/local/lib/python3.6/http/client.py", line 563 in _readall_chunked File "/usr/local/lib/python3.6/http/client.py", line 456 in read File "/usr/local/lib/python3.6/site-packages/urllib3/response.py", line 380 in read File "/usr/local/lib/python3.6/site-packages/urllib3/response.py", line 159 in init File "/usr/local/lib/python3.6/site-packages/urllib3/response.py", line 467 in from_httplib File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 617 in urlopen File "/usr/local/lib/python3.6/site-packages/urllib3/poolmanager.py", line 321 in urlopen File "/usr/local/lib/python3.6/site-packages/urllib3/poolmanager.py", line 349 in urlopen File "/usr/local/lib/python3.6/site-packages/urllib3/request.py", line 87 in request_encode_url File "/usr/local/lib/python3.6/site-packages/urllib3/request.py", line 66 in request File "ultimate3.py", line 296 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect File "ultimate3.py", line 300 in detect ...
Thread 0x00007fbb6e388700 (most recent call first): File "/usr/local/lib/python3.6/ssl.py", line 631 in read File "/usr/local/lib/python3.6/ssl.py", line 871 in read File "/usr/local/lib/python3.6/ssl.py", line 1009 in recv_into File "/usr/local/lib/python3.6/socket.py", line 586 in readinto File "/usr/local/lib/python3.6/http/client.py", line 258 in _read_status File "/usr/local/lib/python3.6/http/client.py", line 297 in begin File "/usr/local/lib/python3.6/http/client.py", line 1331 in getresponse File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 383 in _make_request File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 601 in urlopen File "/usr/local/lib/python3.6/site-packages/urllib3/poolmanager.py", line 321 in urlopen File "/usr/local/lib/python3.6/site-packages/urllib3/request.py", line 148 in request_encode_body File "/usr/local/lib/python3.6/site-packages/telepot/api.py", line 154 in request File "/usr/local/lib/python3.6/site-packages/telepot/init.py", line 491 in _api_request File "/usr/local/lib/python3.6/site-packages/telepot/init.py", line 993 in getUpdates File "/usr/local/lib/python3.6/site-packages/telepot/loop.py", line 60 in run_forever File "/usr/local/lib/python3.6/threading.py", line 864 in run File "/usr/local/lib/python3.6/threading.py", line 916 in _bootstrap_inner File "/usr/local/lib/python3.6/threading.py", line 884 in _bootstrap
Thread 0x00007fbb6eb89700 (most recent call first): File "/usr/local/lib/python3.6/site-packages/telepot/init.py", line 458 in run File "/usr/local/lib/python3.6/threading.py", line 916 in _bootstrap_inner File "/usr/local/lib/python3.6/threading.py", line 884 in _bootstrap
Thread 0x00007fbb6f38a700 (most recent call first): File "/usr/local/lib/python3.6/threading.py", line 295 in wait File "/usr/local/lib/python3.6/queue.py", line 164 in get File "/usr/local/lib/python3.6/site-packages/telepot/loop.py", line 36 in run_forever File "/usr/local/lib/python3.6/site-packages/telepot/loop.py", line 160 in run_forever File "/usr/local/lib/python3.6/threading.py", line 864 in run File "/usr/local/lib/python3.6/threading.py", line 916 in _bootstrap_inner File "/usr/local/lib/python3.6/threading.py", line 884 in _bootstrap
Thread 0x00007fbb7573d700 (most recent call first):
File "ultimate3.py", line 480 in
- line296
`
try: line296 response = self.s.request("get",link, timeout=2).data # get page data from server except: time.sleep(1) self.detect(url=link):
`
line 296 and 300 is in the same function my function is:
`
292-def detect(self,url): 293- 294- link = url 295- try: 296- response = self.s.request("get",link, timeout=2).data # get page data from server, 297- except: 298- 299- time.sleep(1) 300- self.detect(url=link) 301- doc = html.document_fromstring(response) 302- #detect film&serial 303- element=doc.cssselect(".category > a") 304- ser=doc.xpath("/html/body/section/div[3]/div[1]/div/article/div[1]/h1/a")[0].text_content() 305- 306- self.category="film" 307- for elem in element: 308- if "سریال" in elem.text_content() or "سریال" in ser: 309- self.category="serial" 310- if self.category != "serial": 311- 312- self.catchfilm(url) 313- if self.category == "serial": 314- self.catchsserial(url) `
and line 480 is end of code `
while 1: time.sleep(10) `
thanks for your help
Hello @javadfarah,
you might want to refactor your Exception
-handling as you built a loop that caused a stack overflow.
For example you could replace lines 295 up until 300 with:
retries = 5
for retry in range(1, retries + 1):
try:
response = self.s.request("get", link, timeout=2).data
except Exception as err:
print("Failed to fetch data from {url} [{retry}/{retries}]: {err}".format(
url=url, retry=retry, retries=retries err=repr(err)))
time.sleep(retry)
else:
break
else:
print("Failed %s times to fetch data from %s" % (retries, url))
return
Good luck!
hello @das7pad thank you for reply but i want to send a correct answer to my user! i cannot tel him i'm sorry test again! so i should make a loop until get sightly response
You could increase the retries
value to 10000
- even a while True
loop has the same effect. It is a solution for the shown error as the retries do not stack anymore, they stay at the same level.