mirror of
https://github.com/Second-Hand-Friends/kleinanzeigen-bot.git
synced 2026-03-12 10:31:50 +01:00
fix: avoid "[PYI-28040:ERROR]" log message when run via pyinstaller
This commit is contained in:
@@ -1184,12 +1184,20 @@ def main(args:list[str]) -> None:
|
|||||||
loggers.configure_console_logging()
|
loggers.configure_console_logging()
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, error_handlers.on_sigint) # capture CTRL+C
|
signal.signal(signal.SIGINT, error_handlers.on_sigint) # capture CTRL+C
|
||||||
sys.excepthook = error_handlers.on_exception
|
|
||||||
|
# sys.excepthook = error_handlers.on_exception
|
||||||
|
# -> commented out because it causes PyInstaller to log "[PYI-28040:ERROR] Failed to execute script '__main__' due to unhandled exception!",
|
||||||
|
# despite the exceptions being properly processed by our custom error_handlers.on_exception callback.
|
||||||
|
# We now handle exceptions explicitly using a top-level try/except block.
|
||||||
|
|
||||||
atexit.register(loggers.flush_all_handlers)
|
atexit.register(loggers.flush_all_handlers)
|
||||||
|
|
||||||
|
try:
|
||||||
bot = KleinanzeigenBot()
|
bot = KleinanzeigenBot()
|
||||||
atexit.register(bot.close_browser_session)
|
atexit.register(bot.close_browser_session)
|
||||||
nodriver.loop().run_until_complete(bot.run(args))
|
nodriver.loop().run_until_complete(bot.run(args))
|
||||||
|
except Exception:
|
||||||
|
error_handlers.on_exception(*sys.exc_info())
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ kleinanzeigen_bot/utils/error_handlers.py:
|
|||||||
"Aborted on user request.": "Auf Benutzeranfrage abgebrochen."
|
"Aborted on user request.": "Auf Benutzeranfrage abgebrochen."
|
||||||
on_exception:
|
on_exception:
|
||||||
"%s: %s": "%s: %s"
|
"%s: %s": "%s: %s"
|
||||||
|
"Unknown exception occurred (missing exception info): ex_type=%s, ex_value=%s": "Unbekannter Fehler aufgetreten (fehlende Fehlerinformation): ex_type=%s, ex_value=%s"
|
||||||
|
|
||||||
#################################################
|
#################################################
|
||||||
kleinanzeigen_bot/utils/dicts.py:
|
kleinanzeigen_bot/utils/dicts.py:
|
||||||
|
|||||||
@@ -5,14 +5,18 @@ SPDX-ArtifactOfProjectHomePage: https://github.com/Second-Hand-Friends/kleinanze
|
|||||||
"""
|
"""
|
||||||
import sys, traceback
|
import sys, traceback
|
||||||
from types import FrameType, TracebackType
|
from types import FrameType, TracebackType
|
||||||
from typing import Any, Final
|
from typing import Final
|
||||||
|
|
||||||
from . import loggers
|
from . import loggers
|
||||||
|
|
||||||
LOG:Final[loggers.Logger] = loggers.get_logger(__name__)
|
LOG:Final[loggers.Logger] = loggers.get_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def on_exception(ex_type:type[BaseException], ex_value:Any, ex_traceback:TracebackType | None) -> None:
|
def on_exception(ex_type: type[BaseException] | None, ex_value: BaseException | None, ex_traceback: TracebackType | None) -> None:
|
||||||
|
if ex_type is None or ex_value is None:
|
||||||
|
LOG.error("Unknown exception occurred (missing exception info): ex_type=%s, ex_value=%s", ex_type, ex_value)
|
||||||
|
return
|
||||||
|
|
||||||
if issubclass(ex_type, KeyboardInterrupt):
|
if issubclass(ex_type, KeyboardInterrupt):
|
||||||
sys.__excepthook__(ex_type, ex_value, ex_traceback)
|
sys.__excepthook__(ex_type, ex_value, ex_traceback)
|
||||||
elif loggers.is_debug(LOG) or isinstance(ex_value, (AttributeError, ImportError, NameError, TypeError)):
|
elif loggers.is_debug(LOG) or isinstance(ex_value, (AttributeError, ImportError, NameError, TypeError)):
|
||||||
|
|||||||
Reference in New Issue
Block a user