raspberry pi - Python TCP Server Stops Responding After A While -


so wrote python code on rpi create digital poster talks crestron control processor. reason code stops responding after while. dont know why. i dont know if pi going sleep if point out in code cause please let me know.

edit: figured out on own. many commented.

i creating new fbi process every time went through loop, , ended using of pi's ram until came halt because didnt have left. kill fbi process after loading image fixed that. everyones help.

my functions , setup stuff:

import socket import os import thread import sys import urllib time import ctime pil import image import time import random import logging  framebuffercommand = "sudo fbi -a -t 1 -d /dev/fb0 -noverbose " movieposterlocation = "/home/pi/movieposters/" openblackimage = "/home/pi/movieposters/special/black.jpg" killframebuffer = "sudo killall fbi" turnoffscreen = "sudo /opt/vc/bin/tvservice -o" turnonscreen = "sudo /opt/vc/bin/tvservice -p"  def splitstring(input):      stringlist = input.split("/x00/")      return stringlist  def displayrandomposter():     displayingposter = false     filecount = next(os.walk(movieposterlocation))[2] #get number of available posters     print('current # of posters in directory: ' + str(len(filecount)))      attemptnumber = 0      while not displayingposter:         postertodisplay = random.randint(0, len(filecount))         print('trying display random poster')         attemptnumber += 1          try:             image = image.open(movieposterlocation + filecount[postertodisplay]) #open current image             width, height = image.size         except indexerror msg:             print("encountered indexerror while opening image")             width = 0             height = 0               except ioerror msg:             print(msg)         try:             conn.send(msg)         except socket.error msg:             print("socket error")       if width > height:         if attemptnumber > 5:             print("too many attempts, stopping")             break         else:             print("we think isnt poster, trying again")                            continue         else:         try:             conn.send("  displaying poster: " + str(filecount[postertodisplay]))         except socket.error msg:             print msg                         os.system(framebuffercommand + movieposterlocation + filecount[postertodisplay])         displayingposter = true         return 

the thread listening, , main loop:

#-- client thread --  def client(conn):     try:         conn.send("connected raspberry pi")         os.system(framebuffercommand + openblackimage)     except socket.error msg:         print(msg)  print(str(bindsuccess))  while 1:         datareceived = conn.recv(1024)     reply = "ok.. "     conn.send(reply + datareceived)     datalist = splitstring(datareceived)     print(datalist)     if datalist[6] == "":          print("datalist[6] empty, displaying random poster")         displayrandomposter()     else:          try:                 movieposterurl = datalist[6]                         splitposterurl = movieposterurl.split("%")                         movieposterfilename = splitposterurl[7]                             urllib.urlretrieve(movieposterurl, movieposterlocation + movieposterfilename)                             conn.send("xbmc movie poster downloading")             conn.send("movie poster saved as: " + movieposterlocation + movieposterfilename)             print("movie poster saved as: " + movieposterlocation + movieposterfilename)                                     except socket.error:             print("encountered socket error while downloading poster - line 80")                     try:             os.system(framebuffercommand + movieposterlocation + movieposterfilename)             print('opening downloaded poster')         except oserror msg:             print(str(msg[0]) + str(msg[1]))     if not datareceived:         break     time.sleep(1)   #-- main function --  host = '' communicationport = 5005  bindsuccess = false  crestronsocket = socket.socket(socket.af_inet, socket.sock_stream)  print("socket created successfully")  try:     crestronsocket.bind((host, communicationport))     bindsuccess = true except socket.error msg:      bindsuccess = false     print("socket bind error" + msg)     sys.exit()  crestronsocket.listen(1) print("crestron socket listening")  while bindsuccess == true:     #wait accept connection - blocking call     conn, addr = crestronsocket.accept()     print('connected client: ' + addr[0] + ':' + str(addr[1]))           thread.start_new_thread(client , (conn,)) crestronsocket.close() 

i creating new fbi process every time went through loop, , ended using of pi's ram until came halt because didnt have left. kill fbi process after loading image fixed that. everyones help.

i figured out other things make operate better/more seamlessly.