diff --git a/src/Config.py b/src/Config.py index 9eacdb63..0c622a49 100644 --- a/src/Config.py +++ b/src/Config.py @@ -119,6 +119,7 @@ class Config(object): self.parser.add_argument('--verbose', help='More detailed logging', action='store_true') self.parser.add_argument('--debug', help='Debug mode', action='store_true') self.parser.add_argument('--debug_socket', help='Debug socket connections', action='store_true') + self.parser.add_argument('--debug_gevent', help='Debug gevent functions', action='store_true') self.parser.add_argument('--batch', help="Batch mode (No interactive input for commands)", action='store_true') diff --git a/src/Debug/Debug.py b/src/Debug/Debug.py index f3b54fd7..050adf4c 100644 --- a/src/Debug/Debug.py +++ b/src/Debug/Debug.py @@ -1,6 +1,7 @@ import sys import os import traceback +from Config import config # Non fatal exception @@ -28,6 +29,21 @@ def formatException(err=None, format="text"): else: return "%s: %s in %s" % (exc_type.__name__, err, " > ".join(tb)) +# Test if gevent eventloop blocks +if config.debug_gevent: + import logging + import gevent + import time + def testBlock(): + logging.debug("Gevent block checker started") + last_time = time.time() + while 1: + time.sleep(1) + if time.time()-last_time > 1.1: + logging.debug("Gevent block detected: %s" % (time.time()-last_time-1)) + last_time = time.time() + gevent.spawn(testBlock) + if __name__ == "__main__": try: