| Server IP : 170.10.162.208 / Your IP : 216.73.216.181 Web Server : LiteSpeed System : Linux altar19.supremepanel19.com 4.18.0-553.69.1.lve.el8.x86_64 #1 SMP Wed Aug 13 19:53:59 UTC 2025 x86_64 User : deltahospital ( 1806) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /lib/python2.7/site-packages/pynag/Utils/ |
Upload File : |
"""Common decorators used throughout pynag."""
from __future__ import absolute_import
import threading
rlock = threading.RLock()
def synchronized(lock):
""" Synchronization decorator
Use this to make a multi-threaded method synchronized and thread-safe.
Use the decorator like so::
@pynag.Utils.synchronized(pynag.Utils.rlock)
"""
def wrap(f):
def newFunction(*args, **kw):
lock.acquire()
try:
return f(*args, **kw)
finally:
lock.release()
newFunction.__name__ = f.__name__
newFunction.__module__ = f.__module__
return newFunction
return wrap
def cache_only(func):
import pynag.Model
def wrap(*args, **kwargs):
pynag.Model.ObjectFetcher._cache_only = True
try:
return func(*args, **kwargs)
finally:
pynag.Model.ObjectFetcher._cache_only = False
wrap.__name__ = func.__name__
wrap.__module__ = func.__module__
return wrap