Improve connection status determination logic
This commit is contained in:
parent
b4f4ef986c
commit
7a3f2e7596
1 changed files with 21 additions and 9 deletions
|
|
@ -15,11 +15,12 @@ from pathlib import Path
|
|||
from subprocess import CalledProcessError
|
||||
from typing import Union, Optional, Any
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
import requests
|
||||
import shutil
|
||||
import socket
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
|
|
@ -430,14 +431,11 @@ class ConnectionController:
|
|||
return task_output
|
||||
|
||||
@staticmethod
|
||||
def __test_connection(port_number: Optional[int] = None, timeout: float = 10.0):
|
||||
def __test_connection(port_number: Optional[int] = None, timeout: float = 4.0):
|
||||
|
||||
proxies = None
|
||||
request_urls = [Constants.PING_URL]
|
||||
timeout = float(timeout)
|
||||
|
||||
if port_number is not None:
|
||||
proxies = ConnectionController.get_proxies(port_number)
|
||||
command_name = os.path.basename(sys.executable)
|
||||
proxies = None
|
||||
|
||||
if os.environ.get('PING_URL') is None:
|
||||
|
||||
|
|
@ -447,14 +445,28 @@ class ConnectionController:
|
|||
'https://hc3.hydraveil.net'
|
||||
])
|
||||
|
||||
random.shuffle(request_urls)
|
||||
|
||||
if port_number is not None:
|
||||
proxies = ConnectionController.get_proxies(port_number)
|
||||
|
||||
for request_url in request_urls:
|
||||
|
||||
command = [
|
||||
sys.executable, '-u', '-c', 'import requests, sys\n'
|
||||
'try:\n'
|
||||
f' response = requests.get(\'{request_url}\', timeout={timeout}, proxies={proxies})\n'
|
||||
' response.raise_for_status(); print((response.text or \'\')[:15])\n'
|
||||
'except requests.exceptions.RequestException:\n'
|
||||
' sys.exit(1)'
|
||||
]
|
||||
|
||||
try:
|
||||
|
||||
requests.get(request_url, timeout=timeout, proxies=proxies)
|
||||
_response = subprocess.check_output(command, text=True, timeout=timeout)
|
||||
return None
|
||||
|
||||
except requests.exceptions.RequestException:
|
||||
except (subprocess.CalledProcessError, subprocess.TimeoutExpired):
|
||||
pass
|
||||
|
||||
raise ConnectionError('The connection could not be established.')
|
||||
|
|
|
|||
Loading…
Reference in a new issue