Viewing file: tls_check.py (1.29 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
import logging import threading
from playhouse.sqlite_ext import SqliteExtDatabase
class OverridingReset(Exception): """ Overriding reset could be a signal of logic error thus need to be explicitly handled in all places where this exception is expected to occur. """
pass
logger = logging.getLogger(__name__) _thread_local_storage = threading.local()
class SqliteDatabaseWrapper(SqliteExtDatabase): def execute_sql(self, *args, **kwargs): _validate(*args, **kwargs) return super().execute_sql(*args, **kwargs)
def reset(new_value=None): if hasattr(_thread_local_storage, "thread_ident_memo"): raise OverridingReset()
_thread_local_storage.thread_ident_memo = ( new_value or threading.get_ident() )
def _validate(*args, **kwargs): thread_ident_memo = getattr( _thread_local_storage, "thread_ident_memo", None )
if thread_ident_memo is None: logger.error("wrong thread or _validate() was not preceded by reset()")
elif thread_ident_memo != threading.get_ident(): logger.error( "thread_ident_memo check failed [%r != %r]\n" "context:\nargs: %s\nkwargs: %s", thread_ident_memo, threading.get_ident(), args, kwargs, )
|