-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy paththreadGet.py
More file actions
62 lines (54 loc) · 2.43 KB
/
threadGet.py
File metadata and controls
62 lines (54 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Copyright © 2018 Stanislav Hnatiuk. All rights reserved.
# !/usr/bin/env python3
from PyQt5 import QtCore
import requests
from datetime import datetime
class ThreadGet(QtCore.QThread):
"""Поток отправки запроса."""
# Сигнал получения запроса
requestReceived = QtCore.pyqtSignal(list, str, str, datetime)
# Сигнал ошибки
requestFailed = QtCore.pyqtSignal(str, str, datetime)
def __init__(self, address):
"""Инициализация потока."""
super().__init__()
self.address = address
def run(self):
"""Основная функция потока."""
try:
timeBegin = datetime.now()
request = requests.get(
'http://{0}'.format(self.address), timeout=(10, 10))
timeEnd = datetime.now()
delta = self.deltaTimeStr(timeBegin, timeEnd)
if request.status_code == 200:
if len(request.text) > 0:
temp = request.text.split('\n')
try:
temp.remove('')
except Exception:
pass
self.requestReceived.emit(
temp, self.address, delta, timeBegin)
elif int(request.status_code / 100) == 1:
print("{0}: Informational".format(request.status_code))
elif int(request.status_code / 100) == 2:
print("{0}: Success".format(request.status_code))
elif int(request.status_code / 100) == 3:
print("{0}: Redirection ".format(request.status_code))
elif int(request.status_code / 100) == 4:
print("{0}: Client Error".format(request.status_code))
elif int(request.status_code / 100) == 5:
print("{0}: Server Error".format(request.status_code))
except requests.RequestException:
timeEnd = datetime.now()
delta = self.deltaTimeStr(timeBegin, timeEnd)
self.requestFailed.emit(self.address, delta, timeBegin)
def deltaTimeStr(self, begin, end):
"""Вернуть строкой разницу во времени"""
delta = end - begin
deltaStr = str(delta.total_seconds())
delimeter = deltaStr.find('.')
if delimeter < (len(deltaStr) - 2):
deltaStr = deltaStr[0:(delimeter + 2)]
return deltaStr