Форум сайта python.su
20
Добрый день.
Есть небольшой скрипт: Подключаемся к модему -> (коннект к фтп -> UL -> DL)x3 -> restart модема.
Иногда (скорее всего связанно с софтом модема) не удается передать файл размером 1.2мб и скрипт “висит” пока не сбросится UL (около 8 минут). Мне необходимо сбросить Ul, хотябы, через минуту. Думал использовать параллельный поток с таймером и им обрывать ul. Так же искал время копирования в ftputil, но не нашёл. Подскажите, как лучше сделать? Если пропустил таймер в ftputil, подскажите где? Ну и конечно сообщите об ошибках
import serial import ftputil import time sch=0 while 1: try: mod=serial.Serial("COM4",460800,timeout=5) print "Modem ok" sch+=1 except: time.sleep(5) sch+=1 try: print (time.ctime()) ftp=ftputil.FTPHost() print "Connect ok" except: print "Connect problems" try: ftp.upload("D:/comedy.docx","testcomedy.docx") print "UL ok" except: print "UL problems" try: ftp.download("comedy.docx","D:/testcomedy.docx") print "DL ok" ftp.close() except: print "DL problems" if sch==3: try: mod.write("AT+CFUN=1,1\r") print "Restart ok" sch=0 mod.close() time.sleep(40) except: sch=0 mod.close() print "Restart problems"
Отредактировано noob_saibot (Март 27, 2014 13:41:07)
Офлайн
20
Запустил UL в новом потоке, после DL идет слип на 20 секунд, если UL не отработает, сам оборвется при перезагрузке модема.
PS. Пока писал, понял что сделал ужасно кривой костыль. Если у когото есть более правильное решение, то пишите))
Отредактировано noob_saibot (Март 27, 2014 17:19:55)
Офлайн
20
Процесс самобичевания продолжается…
l=thread.allocate_lock() l.acquire() def res(mel,bel): if not l.locked(): time.sleep(5) print "lol" mel=3 bel=3 print "ok" while 1: try: l=thread.allocate_lock() l.acquire() test=thread.start_new_thread(res,(mel,bel)) l.release() print "go" print l.acquire(1) except: print "ups" time.sleep(10)
test=thread.start_new_thread(res,(mel,bel))
Отредактировано noob_saibot (Март 31, 2014 16:59:35)
Офлайн
20
Спасибо “всем”! Оказалось все элементарно через threading.Timer сделать.
Отредактировано noob_saibot (Апрель 24, 2014 10:05:09)
Офлайн