Найти - Пользователи
Полная версия: интервал времени
Начало » Python для новичков » интервал времени
1
sanodin
есть скрипт

# -*- coding: koi8-r -*-
import socket
import os
from win32com.client import Dispatch
from time import sleep
from datetime import datetime

wsh = Dispatch(“WScript.Shell”)

while True:

def f():
try:
socket.gethostbyaddr('www.yandex.ru')
except socket.gaierror:
return False
return True



if f()==False: wsh.Run(“MPLAY32 /play /close 01.mp3”, 0, 1)
else:
continue


пингует и при отсутствии пинга проигрывает мp3 файл…или перезагружает комп

os.system(“shutdown -r -t 1”)

но бывает что пинг временами не проходит. Надо что бы скрипт в течении 30 секунд не прохождения пинга перезагружал комп а если пинг появляется в интервале этих 30 секунд то продолжил выполнение цикла
minotavr_x86
Если время не критично, то есть может пройти больше 30 секунд до перезагрузки, то можно выставить флаг того что нет пинга и получить время и сравнивать каждый цикл это время с текущим.
if f()==False and time_no_ping:    
if datetime.datetime.now() - time_no_ping > 30:
wsh.Run("MPLAY32 /play /close 01.mp3", 0, 1)
elif f()==False:
time_no_ping = datetime.datetime.now()
else:
time_no_ping = None
continue
Если время критично то надо работать с потоками. Пример выдумывать лень.
sanodin
Спасибо….пойду в этом направлении думать, я немного по другому наваял….сейчас в тесте.
sanodin
Потестил немного…вроде работает.Если вдруг затыки будут тогда уж по другому переделаю

import datetime
import socket
import sys
import time
from win32com.client import Dispatch

wsh = Dispatch("WScript.Shell")

# Получаем IP и порт для пинга
host = raw_input('Хост:')
port = raw_input('Порт:')
# Проверяем правильно ли написан порт
if not port.isalnum():
print 'Введите правильно порт'
sys.exit(1)

def tim():

time.sleep(15)
c = socket.socket()
c.settimeout(1)
try:
c.connect((host, int(port)))
except (socket.gaierror,socket.error):
return False
return True

while 1:
# Получаем дату и время
d = datetime.datetime.now()
timestamp = d.strftime("%Y-%m-%d %H:%M:%S")
# Создаёт сокет
s = socket.socket()
s.settimeout(1)
# Попытка подвключится к сокету
try:
s.connect((host, int(port)))
except socket.error:

print timestamp+' '+ host + ':' + port + ' - Неактивен'
tim()
print tim()
if tim()==False:
print tim()
wsh.Run("MPLAY32 /play /close 01.mp3", 0, 1)
else: continue

else:
s.close
print timestamp+' '+ host + ':' + port + ' - Активен'

time.sleep(1)
нет…поспешил.Появились затыки
sanodin
Исходник точно не припомню где взял…совсем немного переделал…так что исходник не мой

И еще…когда музыку проигрывает,подвисает все, перед проигрышем, а после того как музыка заиграла то все нормально
Может еще как проиграть по другому можно…другим методом?
Все под виндой проверял
minotavr_x86
Я с виндой мало работаю. Думаю можно покопать в сторону popen(<команда>) и плеера который можно запускать из командной строки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB