예제 #1
0
    def invoke_func(*args, **kwargs):
        if onWorkerThread('dbThread'):
            return func(*args, **kwargs)
        else:
            if TRHEADING_DEBUG:
                caller = inspect.stack()[1]
                callerstr = "%s %s:%s" % (caller[3], caller[1], caller[2])
                print >> sys.stderr, long(
                    time()), "SWITCHING TO DBTHREAD %s %s:%s called by %s" % (
                        func.__name__, func.func_code.co_filename,
                        func.func_code.co_firstlineno, callerstr)

            event = Event()

            result = [None]

            def db_thread():
                try:
                    result[0] = func(*args, **kwargs)
                finally:
                    event.set()

            #Niels: 10-03-2012, setting prio to 1024 because we are actively waiting for this
            db_thread.__name__ = func.__name__
            register_task(db_thread, priority=1024)

            if event.wait(15) or event.isSet():
                return result[0]

            from traceback import print_stack
            print_stack()
            print >> sys.stderr, "GOT TIMEOUT ON forceAndReturnDBThread", func.__name__
예제 #2
0
파일: __init__.py 프로젝트: jettan/swiftarm
    def invoke_func(*args, **kwargs):
        if onWorkerThread("dbThread"):
            return func(*args, **kwargs)
        else:
            if TRHEADING_DEBUG:
                caller = inspect.stack()[1]
                callerstr = "%s %s:%s" % (caller[3], caller[1], caller[2])
                print >>sys.stderr, long(time()), "SWITCHING TO DBTHREAD %s %s:%s called by %s" % (
                    func.__name__,
                    func.func_code.co_filename,
                    func.func_code.co_firstlineno,
                    callerstr,
                )

            event = Event()

            result = [None]

            def db_thread():
                try:
                    result[0] = func(*args, **kwargs)
                finally:
                    event.set()

            # Niels: 10-03-2012, setting prio to 1024 because we are actively waiting for this
            db_thread.__name__ = func.__name__
            register_task(db_thread, priority=1024)

            if event.wait(15) or event.isSet():
                return result[0]

            from traceback import print_stack

            print_stack()
            print >>sys.stderr, "GOT TIMEOUT ON forceAndReturnDBThread", func.__name__
예제 #3
0
 def invoke_func(*args,**kwargs):
     if onWorkerThread():
         func(*args, **kwargs)
     else:
         if TRHEADING_DEBUG:
             caller = inspect.stack()[1]
             callerstr = "%s %s:%s"%(caller[3],caller[1],caller[2])
             print >> sys.stderr, long(time()), "SWITCHING TO DBTHREAD %s %s:%s called by %s"%(func.__name__, func.func_code.co_filename, func.func_code.co_firstlineno, callerstr)
         startWorker(None, func, wargs=args, wkwargs=kwargs)
예제 #4
0
    def invoke_func(*args, **kwargs):
        if onWorkerThread('dbThread'):
            func(*args, **kwargs)
        else:
            if TRHEADING_DEBUG:
                caller = inspect.stack()[1]
                callerstr = "%s %s:%s" % (caller[3], caller[1], caller[2])
                print >> sys.stderr, long(
                    time()), "SWITCHING TO DBTHREAD %s %s:%s called by %s" % (
                        func.__name__, func.func_code.co_filename,
                        func.func_code.co_firstlineno, callerstr)

            register_task(func, args, kwargs)