Created
April 23, 2025 17:18
-
-
Save krystofair/143da221e224cda160f55b2b31f70447 to your computer and use it in GitHub Desktop.
To jest test zamknięcia stdout po jakimś czasie kiedy występuje timeout albo użytkownik zamknie konsolę.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
To jest test zamknięcia stdout po jakimś czasie kiedy występuje timeout albo użytkownik zamknie konsolę. | |
1. Wykonano skrypt przez: `python3 ./main.py & disown` | |
Co pozwoliło na wyjście z konsoli bez zamknięcia procesu, który przechodzi w tryb daemona. | |
2. Zamknięto konsolę użytkownika ssh | |
3. Skrypt próbował zapisać do standardowego wyjścia. | |
--RESULT-- | |
4. W pliku `log` wystąpił wyjątek `[Error 5] Input/Output error` ponieważ wystąpiła | |
próba zapisu do nieistniejącego już pliku. (Wyjście konsoli jest plikiem jako /dev/ptsX) | |
------------------------------------------------------------------------------------------- | |
Następny test to wykonanie wyjścia z użyciem modułu `logging` bez dodawania handlera plikowego. | |
Dlatego zakomentowano "printy", a dodano loger.warning(''). | |
To, dlaczego "warning", a nie "info" jest wynikiem domyślnego poziomu ważności. | |
1. Wszystkie kroki z wykonaniem jak w powyższym. (1,2,3) | |
--RESULT-- | |
2. Wyjątek nie wystąpił, plik "log" nie został utworzony, process ciągle działa. | |
------------------------------------------------------ | |
Podsumowanie | |
============ | |
Dlatego ważne jest używanie modułu *logging* w Pythonie, jeśli chcemy aby nasze programy | |
działały niezawodnie i warto zgłębić dokumentację dla tego modułu, ponieważ pozwala ona | |
na dywersyfikację poziomów przez co możemy używać metody `debug` logera tam gdzie byśmy | |
używali przysłowiowe `print("cztery litery")`, a na końcu ustawić poziom logowania na | |
*logging.INFO*. | |
""" | |
from time import sleep | |
# import sys | |
import os | |
import logging | |
# print(sys.stdout) | |
# sys.stdout.close() | |
try: | |
loger = logging.getLogger(__name__) | |
while True: | |
# print("NANANA") | |
loger.warning("NANANA") | |
sleep(5) | |
except ValueError as e: | |
with open("log",'a', encoding='utf-8') as log: | |
log.write("\n===ValueError===\n") | |
log.write(str(e)) | |
except OSError as e: | |
#: To jest ten wyjątek. | |
with open("log",'a', encoding='utf-8') as log: | |
log.write("\n===OSError===\n") | |
log.write(str(e)) | |
except Exception as e: | |
with open("log",'a', encoding='utf-8') as log: | |
log.write("\n===Exception===\n") | |
log.write(str(e)) | |
# Wpis w formie kodu, bo ciekawość mnie zżerała, | |
# czy faktycznie miałem rację, | |
# kiedy pomagając z problemem zamykania się procesu po "jakimś czasie" | |
# wpadłem na coś takiego. | |
#: Nieskromnie powiem - miałem - jak zwykle intuicja mnie nie zawiodła. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment