Уведомления

Группа в Telegram: @pythonsu

#1 Март 27, 2014 13:38:15

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Ftputil проблемы с UL

Добрый день.
Есть небольшой скрипт: Подключаемся к модему -> (коннект к фтп -> 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)

Офлайн

#2 Март 27, 2014 17:18:06

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Ftputil проблемы с UL

Запустил UL в новом потоке, после DL идет слип на 20 секунд, если UL не отработает, сам оборвется при перезагрузке модема.

PS. Пока писал, понял что сделал ужасно кривой костыль. Если у когото есть более правильное решение, то пишите))

Отредактировано noob_saibot (Март 27, 2014 17:19:55)

Офлайн

#3 Март 31, 2014 16:56:32

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Ftputil проблемы с UL

Процесс самобичевания продолжается…

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)
Почему print l.acquire(1) выдает True, но поток блочится через раз, причем я не нахожу зависимости. Если каждый раз создается новый поток то
test=thread.start_new_thread(res,(mel,bel))
надо вынести из цикла, а в цикле использовать release и acquire, но тогда эти команды не влияют на новый поток. Подскажите, что я делаю неправильно?

PS. Кстати, если кто-то знает, как настроить скрипт на корректную работу модема, без использования thread, напишите

Отредактировано noob_saibot (Март 31, 2014 16:59:35)

Офлайн

#4 Апрель 24, 2014 10:04:50

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Ftputil проблемы с UL

Спасибо “всем”! Оказалось все элементарно через threading.Timer сделать.

Отредактировано noob_saibot (Апрель 24, 2014 10:05:09)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version