FirebirdSQL / python3-driver

Firebird driver for Python that uses new Firebird API
https://www.firebirdsql.org/en/devel-python-driver/
MIT License
26 stars 10 forks source link

Add low-level access to fb_shutdown_callback API functions #10

Closed artyom-smirnov closed 2 years ago

artyom-smirnov commented 2 years ago

libfbclient handle signals on its own, so driver will get shutdown error on SIGTERM/SIGINT/SIGBREAK and there is no other possibilities to prevent it and softly stop process except handling shutdown manually:

Example of fb_shutdown_callback usage:

@FB_SHUTDOWN_CALLBACK def driver_shutdown_callback(reason, mask, arg): return 1 if reason == fb_shutrsn_signal else 0

def api_loaded_hook(api): status = ISC_STATUS_ARRAY(20) api.fb_shutdown_callback(status, driver_shutdown_callback, fb_shut_confirmation, None) if db_api_error(status): raise exception_from_status(InternalError, status, "Error while adding shutdown callback")

add_hook(APIHook.LOADED, FirebirdAPI, api_loaded_hook)

artyom-smirnov commented 2 years ago

Sorry, I accidentally closed previous PR by deleting branch. I've removed fb_shutdown in this PR (of course it already implemented in OO API, thanks) but kept fbshut* flags.