32 lines
826 B
Python
32 lines
826 B
Python
|
|
||
|
from watchdog.events import FileSystemEventHandler
|
||
|
from watchdog.events import FileSystemEvent
|
||
|
import psutil
|
||
|
import os
|
||
|
import sys
|
||
|
import logging
|
||
|
|
||
|
logger = logging.getLogger('TeleBot')
|
||
|
|
||
|
class EventHandler(FileSystemEventHandler):
|
||
|
def on_any_event(self, event: FileSystemEvent):
|
||
|
logger.info('* Detected changes in: %s, reloading', (event.src_path))
|
||
|
restart_file()
|
||
|
|
||
|
def restart_file():
|
||
|
try:
|
||
|
p = psutil.Process(os.getpid())
|
||
|
for handler in p.open_files() + p.connections():
|
||
|
os.close(handler.fd)
|
||
|
except OSError:
|
||
|
pass
|
||
|
except Exception as e:
|
||
|
logger.error(e)
|
||
|
|
||
|
python = sys.executable
|
||
|
|
||
|
if os.name == 'nt':
|
||
|
os.execv(sys.executable, ['python'] + sys.argv)
|
||
|
else:
|
||
|
os.execl(python, python, *sys.argv)
|