Search.setIndex({"docnames": ["authors", "basic_usage", "design_patterns", "environment", "examples", "history", "hubs", "index", "modules", "modules/backdoor", "modules/corolocal", "modules/dagpool", "modules/db_pool", "modules/debug", "modules/event", "modules/greenpool", "modules/greenthread", "modules/pools", "modules/queue", "modules/semaphore", "modules/timeout", "modules/websocket", "modules/wsgi", "modules/zmq", "patching", "ssl", "testing", "threading", "zeromq"], "filenames": ["authors.rst", "basic_usage.rst", "design_patterns.rst", "environment.rst", "examples.rst", "history.rst", "hubs.rst", "index.rst", "modules.rst", "modules/backdoor.rst", "modules/corolocal.rst", "modules/dagpool.rst", "modules/db_pool.rst", "modules/debug.rst", "modules/event.rst", "modules/greenpool.rst", "modules/greenthread.rst", "modules/pools.rst", "modules/queue.rst", "modules/semaphore.rst", "modules/timeout.rst", "modules/websocket.rst", "modules/wsgi.rst", "modules/zmq.rst", "patching.rst", "ssl.rst", "testing.rst", "threading.rst", "zeromq.rst"], "titles": ["Authors", "Basic Usage", "Design Patterns", "Environment Variables", "Examples", "History", "Understanding Eventlet Hubs", "Eventlet Documentation", "Module Reference", "backdoor \u2013 Python interactive interpreter within a running process", "corolocal \u2013 Coroutine local storage", "dagpool \u2013 Dependency-Driven Greenthreads", "db_pool \u2013 DBAPI 2 database connection pooling", "debug \u2013 Debugging tools for Eventlet", "event \u2013 Cross-greenthread primitive", "greenpool \u2013 Green Thread Pools", "greenthread \u2013 Green Thread Implementation", "pools - Generic pools of resources", "queue \u2013 Queue class", "semaphore \u2013 Semaphore classes", "timeout \u2013 Universal Timeouts", "websocket \u2013 Websocket Server", "wsgi \u2013 WSGI server", "eventlet.green.zmq \u2013 \u00d8MQ support", "Greening The World", "Using SSL With Eventlet", "Testing Eventlet", "Threads", "Zeromq"], "terms": {"jakub": 0, "stasiak": 0, "nat": 0, "goodspe": 0, "The": [0, 1, 2, 3, 4, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 26, 27], "current": [0, 1, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 24, 26, 27], "": [0, 1, 2, 3, 4, 5, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27], "ar": [0, 1, 2, 3, 4, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28], "volunt": 0, "unrel": 0, "job": [0, 2, 4, 15], "we": [0, 1, 2, 4, 11, 24, 26], "can": [0, 1, 2, 3, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], "onli": [0, 1, 3, 4, 6, 7, 11, 12, 14, 16, 17, 18, 20, 22, 24, 25, 27, 28], "pai": 0, "sporad": 0, "attent": 0, "respond": [0, 2, 22], "your": [0, 1, 4, 6, 11, 25, 26], "issu": [0, 5, 22], "pull": 0, "request": [0, 1, 2, 4, 7, 9, 11, 21, 22, 25], "submiss": 0, "patienc": 0, "greatli": 0, "appreci": 0, "bob": [0, 5], "ippolito": [0, 5], "donovan": [0, 5], "preston": [0, 5], "ag": 0, "project": [0, 5, 28], "chri": 0, "atle": 0, "r": [0, 4, 15, 22], "tyler": 0, "ballanc": 0, "deni": 0, "bilenko": 0, "mike": 0, "barton": 0, "patrick": 0, "carlisl": 0, "ben": 0, "ford": 0, "andrew": 0, "godwin": 0, "brantlei": 0, "harri": 0, "gregori": 0, "holt": 0, "joe": 0, "malicki": 0, "chet": 0, "murthi": 0, "eugen": 0, "oden": 0, "radix": 0, "scott": 0, "robinson": 0, "tavi": 0, "rudd": 0, "sergei": 0, "shepelev": 0, "chuck": 0, "thier": 0, "nick": 0, "v": [0, 22], "daniel": [0, 24], "varrazzo": [0, 24], "ryan": 0, "william": 0, "geoff": 0, "salmon": 0, "edward": 0, "georg": 0, "flori": 0, "bruynoogh": 0, "paul": 0, "oppenheim": 0, "aldona": 0, "majorek": 0, "victor": 0, "sergeyev": 0, "david": 0, "szotten": 0, "stinner": 0, "samuel": 0, "merritt": 0, "eric": 0, "urban": 0, "john": 0, "beislei": 0, "tess": 0, "chu": 0, "dave": 0, "kaprielian": 0, "kartic": 0, "krishnamurthi": 0, "bryan": 0, "o": [0, 1, 4, 5, 6, 15, 16, 23, 24, 26, 27], "sullivan": 0, "kent": 0, "quirk": 0, "adamkg": 0, "give": [0, 12, 17], "hint": [0, 22], "invalid": 0, "argument": [0, 1, 2, 6, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24], "error": [0, 4, 12, 14, 21, 22, 23], "were": [0, 2, 4, 5, 11, 18, 26], "introduc": 0, "post": [0, 2, 4, 8], "0": [0, 1, 2, 4, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26], "9": [0, 21], "luke": 0, "tucker": 0, "report": [0, 11, 18, 26], "regard": 0, "wsgi": [0, 2, 7, 8, 21], "webob": 0, "taso": 0, "du": 0, "val": 0, "repro": 0, "an": [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "except": [0, 1, 2, 4, 12, 13, 14, 15, 16, 18, 20, 22, 23, 24, 28], "squelch": 0, "save": [0, 1], "children": 0, "live": 0, "luci": 0, "stanescu": 0, "twist": 0, "hub": [0, 3, 7, 13, 23, 27], "marcu": 0, "cavanaugh": 0, "test": [0, 7, 11, 12, 22, 25], "case": [0, 2, 4, 6, 11, 12, 17, 18, 19, 20, 22, 24, 25, 26, 27, 28], "code": [0, 1, 2, 4, 6, 7, 11, 13, 20, 21, 22, 26, 27], "ha": [0, 1, 2, 4, 5, 6, 9, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25], "been": [0, 6, 9, 11, 12, 18, 20, 21, 22], "incredibli": [0, 4, 13], "us": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28], "track": [0, 12, 23], "down": [0, 2, 18], "brian": 0, "brunswick": 0, "mani": [0, 1, 4, 11, 15, 19, 22, 26, 28], "help": [0, 9, 11, 22], "question": [0, 11], "suggest": 0, "mail": 0, "list": [0, 2, 3, 4, 14, 15, 16, 26], "cesar": 0, "alaniz": 0, "uncov": 0, "great": [0, 4], "import": [0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 17, 21, 22, 25, 26, 27], "grugq": 0, "contribut": [0, 11], "patch": [0, 7, 24], "ralf": 0, "schmitt": 0, "incompat": 0, "fix": [0, 11], "benoit": 0, "chesneau": 0, "green": [0, 1, 2, 4, 7, 8, 22, 25, 27, 28], "slant": 0, "better": [0, 13], "iter": [0, 1, 2, 4, 11, 15], "implement": [0, 1, 4, 5, 6, 7, 8, 11, 13, 14, 17, 18, 19], "tpool": [0, 3, 7, 13], "ambroff": 0, "nice": [0, 26], "pygtk": 0, "exampl": [0, 1, 2, 7, 12, 14, 16, 20, 21, 22, 24, 25, 26, 27], "michael": 0, "carter": 0, "websocket": [0, 7, 8, 22], "improv": [0, 22], "locat": [0, 5], "handl": [0, 1, 2, 4, 9, 11, 21, 22, 25, 26], "marcin": 0, "bachri": 0, "good": [0, 1, 2, 4, 6, 14, 16, 22, 24], "diagnosi": 0, "lead": 0, "ziegler": 0, "53": 0, "favo": 0, "yang": 0, "schmir": 0, "readlin": [0, 2, 4, 20], "method": [0, 1, 2, 6, 11, 12, 16, 17, 18, 19, 21, 22, 23, 24, 27], "chunk": [0, 1, 22], "encod": [0, 21], "py": [0, 4, 14, 21, 22, 25, 26], "advic": 0, "patcher": [0, 24], "slide": 0, "open": [0, 1, 2, 4, 5, 7, 12, 15, 20, 22], "sourc": [0, 4, 5, 7, 26], "gogreen": 0, "holger": 0, "krekel": 0, "small": [0, 4, 22], "mikepk": 0, "debug": [0, 7, 8, 9, 10, 16, 22], "mysqldb": [0, 12], "malcolm": 0, "cleaton": 0, "event": [0, 6, 7, 8, 13, 22, 28], "alexei": 0, "borzenkov": 0, "window": 0, "detect": [0, 13, 22, 26], "66": 0, "69": 0, "reduc": 0, "depend": [0, 1, 4, 5, 6, 7, 8, 12, 24, 25, 28], "zeromq": [0, 7, 23], "71": 0, "anonym": 0, "chat": [0, 7], "70": 0, "poll": [0, 6, 11], "74": 0, "conveni": [0, 2, 7, 9, 15, 20, 21, 24, 26], "86": 0, "ruijun": 0, "luo": 0, "figur": [0, 13], "out": [0, 1, 4, 9, 12, 13, 14, 15, 17, 19, 20, 24], "incorrect": 0, "openssl": [0, 25], "wrap_ssl": [0, 1, 22], "73": 0, "rfk": 0, "get": [0, 1, 2, 4, 5, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 26, 28], "zmq": [0, 7, 8, 28], "respect": [0, 2, 4, 11, 18], "noblock": [0, 23], "flag": [0, 11, 20, 23], "soren": 0, "hansen": 0, "subprocess": 0, "77": 0, "stefano": 0, "rivera": 0, "make": [0, 1, 2, 4, 6, 11, 13, 14, 19, 22, 25, 26, 27], "pass": [0, 4, 6, 11, 12, 14, 17, 20, 21, 22, 23, 25], "absenc": 0, "postgr": 0, "78": 0, "joshua": 0, "kwan": 0, "busi": 0, "wait": [0, 4, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 25], "eventlet": [0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 28], "ssl": [0, 1, 7, 8, 21, 24], "vatamaniuc": 0, "so_reuseaddr": [0, 1], "83": 0, "clai": 0, "gerrard": 0, "socket": [0, 1, 2, 6, 7, 8, 9, 13, 16, 21, 22, 23, 24, 25, 27, 28], "close": [0, 1, 4, 12, 21, 22, 25], "client": [0, 1, 4, 7, 9, 13, 21, 22, 25, 26, 28], "95": 0, "windisch": 0, "getsockopt": [0, 23], "wake": [0, 6, 12, 19], "correct": [0, 11, 24, 26], "thread": [0, 1, 2, 4, 6, 7, 8, 18, 19, 22, 23, 24], "22": [0, 4], "raymond": 0, "lu": 0, "sendal": [0, 2, 4], "thoma": 0, "grainger": 0, "webcrawl": [0, 4], "librari": [0, 1, 5, 6, 7, 11, 18, 23, 27], "travi": 0, "integr": 0, "peter": 0, "portant": 0, "syscal": 0, "dup": [0, 22], "environ": [0, 2, 4, 6, 7, 21, 22, 26, 27], "remote_port": 0, "skirko": 0, "settimeout": 0, "derk": 0, "tegel": 0, "pre": [0, 17], "cach": 0, "proxi": [0, 2, 12, 27], "greensocket": 0, "bitbucket": 0, "136": 0, "option": [0, 1, 11, 18, 19, 21, 22, 26, 27], "timeout": [0, 1, 4, 6, 7, 8, 13, 14, 17, 18, 19, 22], "modul": [0, 1, 4, 6, 7, 9, 12, 13, 14, 16, 18, 21, 22, 23, 24, 25, 26, 27, 28], "89": 0, "goetz": 0, "allow": [0, 1, 11, 12, 15, 21, 22, 28], "minimum_chunk_s": [0, 22], "overriden": [0, 12, 17], "per": [0, 1, 12, 22], "basi": [0, 6, 12, 14, 22], "dmitri": 0, "orlov": 0, "accept": [0, 1, 2, 3, 4, 9, 11, 12, 17, 22, 25, 28], "upgrad": 0, "lowercas": 0, "zhang": 0, "hua": 0, "profil": 0, "accumul": 0, "result": [0, 1, 2, 4, 11, 12, 14, 15, 16, 17, 20], "between": [0, 1, 2, 9, 11, 14, 26, 27], "run": [0, 1, 2, 4, 5, 6, 7, 8, 11, 13, 15, 16, 22, 25, 26, 27], "162": 0, "astrum": 0, "kuo": 0, "python3": 0, "compat": [0, 12, 19, 27], "greenthread": [0, 4, 6, 7, 8, 9, 12, 13, 15, 17, 18, 19, 20, 23, 27], "unlink": [0, 16], "davanum": 0, "sriniva": 0, "dmitrii": 0, "kruglyak": 0, "pypi": [0, 4], "2": [0, 7, 8, 14, 17, 19, 20, 22, 23, 25], "3": [0, 2, 7, 14, 22, 23], "jan": 0, "grant": 0, "kerrin": 0, "second": [0, 1, 6, 12, 13, 14, 16, 17, 18, 20], "simultan": [0, 2, 4, 28], "read": [0, 1, 2, 4, 6, 7, 13, 20, 22, 25, 26], "gh": 0, "94": 0, "simon": 0, "jago": 0, "octal": 0, "liter": [0, 11, 12], "tushar": 0, "gohad": 0, "support": [0, 4, 6, 8, 18, 21, 24, 26, 28], "header": [0, 8, 21], "w": [0, 4, 21], "100": [0, 8, 25], "continu": [0, 8, 9, 11], "respons": [0, 8, 21], "raylu": 0, "oper": [0, 4, 5, 6, 9, 12, 14, 15, 17, 18, 20, 22, 27], "preced": 0, "christoph": 0, "gysin": 0, "pep": [0, 24], "8": [0, 21, 24], "conform": 0, "andrei": 0, "gubarev": 0, "corei": 0, "wright": 0, "deva": 0, "johann": 0, "erdfelt": 0, "kevin": 0, "qthcn": 0, "steven": 0, "hardi": 0, "stuart": 0, "mclaren": 0, "tomaz": 0, "murau": 0, "changbo": 0, "guo": 0, "gcb": 0, "typo": 0, "document": [0, 1, 6, 14, 21], "194": 0, "marc": 0, "abramowitz": 0, "readm": 0, "so": [0, 1, 2, 3, 4, 6, 9, 11, 12, 14, 16, 19, 20, 22, 24, 26], "render": 0, "correctli": 0, "183": 0, "shaun": 0, "stanworth": 0, "equal": [0, 19], "chanc": [0, 1, 13], "acquir": [0, 19], "semaphor": [0, 7, 8], "from": [0, 1, 2, 4, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 21, 22, 24, 25, 26, 27, 28], "differ": [0, 1, 2, 4, 11, 14, 15, 18, 19, 21, 27, 28], "lior": 0, "neudorf": 0, "sure": [0, 1, 6, 19], "retri": [0, 23], "done": [0, 1, 2, 4, 12, 17, 19, 24], "exact": [0, 28], "same": [0, 1, 2, 4, 5, 6, 9, 11, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26], "data": [0, 1, 2, 4, 11, 13, 18, 20, 22, 23], "buffer": [0, 23], "sean": 0, "dagu": 0, "provid": [0, 1, 2, 4, 11, 12, 17, 20, 21, 22, 23, 24, 26, 27, 28], "python": [0, 1, 2, 4, 5, 6, 8, 11, 22, 23, 24, 25, 26, 27], "log": [0, 13, 21, 22], "tim": 0, "simmon": 0, "_socket_nodn": 0, "select": [0, 1, 6, 12, 24], "dnspython": 0, "antonio": 0, "cuni": 0, "fd": [0, 4, 6], "doubl": 0, "seyeong": 0, "kim": 0, "ihar": 0, "hrachyshka": 0, "janusz": 0, "harkot": 0, "fukuchi": 0, "daisuk": 0, "ramakrishnan": 0, "g": [0, 1, 11, 12, 15, 16, 24], "ashutosh": 0, "mishra": 0, "azhar": 0, "hussain": 0, "josh": 0, "vanderlinden": 0, "levent": 0, "polyak": 0, "phu": 0, "collin": 0, "stock": 0, "urllib2": [0, 4, 20, 25], "urlopen": [0, 2, 4, 7, 25], "cafil": 0, "capath": 0, "cadefault": 0, "alexi": 0, "lee": 0, "erenst": 0, "pi\u00ebt": 0, "delport": 0, "alex": 0, "villac\u00ed": 0, "lasso": 0, "yashwardhan": 0, "singh": 0, "burk": 0, "ond\u0159ej": 0, "nov\u00fd": 0, "jarrod": 0, "johnson": 0, "whitnei": 0, "young": 0, "matthew": 0, "d": [0, 2, 4, 11, 26], "pagel": 0, "matt": 0, "yule": 0, "bennett": 0, "artur": 0, "stawiarski": 0, "tal": 0, "wrii": 0, "roman": 0, "podoliaka": 0, "gevorg": 0, "davoian": 0, "kobli\u017eek": 0, "yuichi": 0, "bando": 0, "feng": 0, "aayush": 0, "kasurd": 0, "linb": 0, "geoffrei": 0, "costa": 0, "christofi": 0, "ad": [0, 5, 18], "permessag": 0, "deflat": 0, "weboscket": 0, "extens": [0, 8], "kovari": 0, "konstantin": 0, "enchant": 0, "jame": 0, "page": [0, 4, 7], "stefan": 0, "nica": 0, "haikel": 0, "guemar": 0, "miguel": 0, "grinberg": 0, "kerr": 0, "anthoni": 0, "sottil": 0, "quan": 0, "tian": 0, "orishoshan": 0, "haferkamp": 0, "jake": 0, "tesler": 0, "If": [1, 2, 6, 7, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "first": [1, 3, 6, 11, 12, 16, 17, 18, 20, 24, 25], "time": [1, 2, 5, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 28], "you": [1, 2, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 17, 20, 21, 22, 24, 25, 26, 27, 28], "mai": [1, 4, 5, 6, 11, 12, 14, 16, 17, 18, 19, 20, 22, 24, 25, 28], "find": [1, 7, 11, 21, 22], "illumin": 1, "design": [1, 7, 26], "pattern": [1, 4, 7], "start": [1, 2, 4, 5, 6, 11, 16, 22], "point": [1, 4, 11, 13, 14], "i": [1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], "built": [1, 6, 24, 25], "around": 1, "concept": [1, 5], "e": [1, 4, 7, 11, 12, 15, 16, 23, 24], "coroutin": [1, 4, 5, 6, 7, 8, 14, 16, 17, 27], "term": [1, 2, 7], "interchang": 1, "launch": [1, 2, 6, 11, 15, 22], "do": [1, 2, 4, 6, 11, 13, 14, 15, 16, 19, 21, 24, 26, 27], "relat": [1, 7, 15, 24], "work": [1, 2, 4, 5, 7, 11, 12, 15, 18, 21, 22, 24, 25, 26, 27], "normal": [1, 2, 6, 9, 12, 13, 16, 21, 22, 24, 27, 28], "two": [1, 4, 11, 14, 17, 20, 28], "main": [1, 5, 6, 16, 24, 27], "wai": [1, 4, 9, 11, 14, 16, 17, 21, 22, 24, 26, 27], "cheap": 1, "thei": [1, 2, 3, 4, 6, 11, 12, 14, 15, 18, 22, 24, 26, 27], "nearli": 1, "free": [1, 12, 15, 17, 18], "have": [1, 2, 4, 6, 11, 12, 16, 18, 22, 23, 24, 25, 26, 27], "conserv": 1, "like": [1, 4, 6, 11, 12, 13, 16, 18, 19, 21, 22, 24, 25, 26, 27], "would": [1, 11, 12, 19], "In": [1, 6, 9, 11, 12, 15, 17, 18, 19, 20, 25, 28], "gener": [1, 7, 8, 11, 12, 14, 16, 21, 22, 23, 26, 28], "least": [1, 16, 26], "one": [1, 2, 3, 4, 6, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 22, 24, 25, 26, 27, 28], "connect": [1, 2, 7, 8, 9, 21, 22, 25, 26, 27, 28], "cooper": [1, 2, 9, 12, 16, 17, 20, 24, 27], "yield": [1, 2, 9, 11, 12, 13, 16, 17, 20, 22, 24, 27], "each": [1, 2, 6, 9, 11, 15, 18, 22, 26, 27], "other": [1, 2, 6, 11, 12, 14, 16, 17, 18, 19, 21, 22, 24, 26, 27], "instead": [1, 2, 3, 6, 11, 12, 13, 15, 19, 24, 26], "preemptiv": 1, "being": [1, 4, 6, 13, 16, 28], "schedul": [1, 5, 6, 16, 20], "major": [1, 18, 27], "advantag": [1, 24, 25], "thi": [1, 2, 3, 4, 6, 7, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], "behavior": [1, 2, 3, 11, 13, 15, 16, 19, 21, 24], "share": [1, 12, 13], "structur": [1, 2], "don": [1, 2, 4, 11, 13, 22, 24, 26], "t": [1, 2, 4, 6, 11, 12, 13, 16, 19, 20, 22, 24, 26], "need": [1, 3, 6, 11, 17, 19, 22, 24, 25], "lock": [1, 19], "becaus": [1, 2, 3, 6, 11, 18, 19, 21, 24, 26], "explicitli": [1, 6, 11, 16, 24], "call": [1, 2, 3, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27], "anoth": [1, 6, 11, 14, 16, 19, 25], "access": [1, 9, 26, 27], "It": [1, 2, 4, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 26, 27], "also": [1, 2, 5, 6, 11, 15, 21, 22, 23, 24, 27], "possibl": [1, 6, 11, 16, 18, 19, 24], "inspect": [1, 6, 9, 13], "primit": [1, 7, 8, 16, 27], "queue": [1, 4, 7, 8, 14, 23, 24, 28], "see": [1, 3, 4, 6, 11, 13, 14, 16, 20, 21, 23, 24, 26], "ani": [1, 2, 3, 4, 5, 6, 11, 12, 13, 15, 16, 17, 20, 22, 23, 24, 26, 27], "pend": [1, 8, 11, 20, 23], "goal": 1, "simplic": [1, 25], "readabl": 1, "should": [1, 11, 14, 16, 19, 20, 21, 22, 23, 24, 27], "abl": [1, 5, 16, 20, 22], "its": [1, 2, 3, 4, 9, 11, 12, 13, 15, 16, 17, 18, 19, 23, 26, 27], "understand": [1, 3, 7, 26], "what": [1, 3, 6, 7, 11, 13, 24, 26], "fewer": 1, "line": [1, 2, 4, 6, 14, 15, 20, 22, 24, 26], "prefer": [1, 6, 21], "over": [1, 2, 4, 11, 15, 16, 24, 25], "excess": [1, 21], "clever": 1, "itself": [1, 2, 4, 6, 11, 12, 13, 16, 20, 24, 26, 28], "obviou": 1, "though": [1, 11, 16, 19, 22, 26], "much": [1, 11, 12, 19, 25, 26], "most": [1, 4, 5, 12, 14, 18, 19, 20, 24, 26], "stuff": 1, "simpli": [1, 6, 9, 11, 12, 21, 22, 24, 26], "here": [1, 2, 4, 9, 19, 20, 21, 24, 25, 26], "quick": 1, "summari": [1, 26], "avail": [1, 6, 7, 11, 12, 15, 16, 17, 18, 21, 23], "link": [1, 4, 16], "more": [1, 2, 4, 5, 7, 9, 11, 15, 17, 18, 19, 21, 22, 23, 24, 25], "verbos": 1, "func": [1, 15, 16, 20, 22], "arg": [1, 9, 10, 11, 12, 14, 15, 16, 18, 20, 22, 27], "kw": [1, 10, 12, 15], "off": [1, 2, 11, 24], "multipl": [1, 4, 6, 9, 11, 12, 13, 14, 19, 22, 24, 28], "parallel": [1, 2, 4, 26], "return": [1, 2, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27], "valu": [1, 2, 4, 9, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 27], "object": [1, 6, 11, 12, 14, 15, 16, 17, 18, 21, 22, 23, 27], "which": [1, 2, 4, 6, 11, 12, 13, 14, 15, 16, 17, 19, 21, 22, 24, 26, 27], "retriev": [1, 2, 11, 15, 16, 18], "detail": [1, 13, 21], "spawn_n": [1, 2, 4, 8, 14, 15, 16], "know": [1, 6, 11, 13], "how": [1, 2, 4, 7, 9, 11, 12, 13, 14, 19, 22, 26], "termin": [1, 4, 11, 13, 16, 21, 25], "execut": [1, 2, 9, 12, 13, 15, 16, 20, 22, 26, 27], "faster": [1, 16, 18], "spawn_aft": [1, 8, 16], "after": [1, 5, 11, 12, 13, 16, 19, 20, 22, 26], "elaps": [1, 6, 16], "delai": [1, 16], "version": [1, 2, 9, 21, 22, 23, 24, 25, 26], "To": [1, 4, 6, 7, 11, 13, 15, 16, 21, 22, 23, 26], "abort": [1, 16, 20], "prevent": [1, 13, 16], "cancel": [1, 8, 16, 20], "sleep": [1, 4, 8, 14, 16, 20, 24], "suspend": [1, 6, 15, 19], "process": [1, 2, 4, 7, 8, 11, 15, 18, 21, 22], "class": [1, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 20, 21, 22, 23, 24, 27], "greenpool": [1, 2, 4, 7, 8, 11, 22], "pool": [1, 2, 3, 4, 7, 8, 11, 13], "concurr": [1, 2, 4, 7, 11, 12, 15, 17, 27], "veri": [1, 2, 4, 11, 12, 17, 19, 20], "common": [1, 2, 6, 11, 24, 27], "applic": [1, 2, 4, 6, 9, 11, 13, 20, 21, 22, 24], "want": [1, 2, 11, 12, 16, 22, 26, 27], "consum": [1, 2, 7, 11, 15, 17, 18], "finit": [1, 16], "amount": [1, 2, 12, 15], "memori": [1, 2, 15], "restrict": [1, 27], "part": [1, 22], "hold": [1, 12, 14, 17], "leav": [1, 9, 11], "rest": [1, 9, 11, 12], "behav": [1, 9, 11, 18, 19, 22, 23, 24, 27], "consist": [1, 19, 26], "face": 1, "unpredict": 1, "input": [1, 2, 4, 11, 15, 22], "greenpil": [1, 2, 4, 8, 15], "repres": [1, 11, 12, 15, 19, 27], "essenc": [1, 11], "stuf": 1, "later": [1, 2, 20, 23, 25], "fundament": 1, "construct": [1, 2, 3, 11, 12, 15, 16, 17], "commun": [1, 2, 14, 22, 27], "unit": [1, 26], "bunch": [1, 2, 4, 7, 12, 14, 15, 24, 26], "featur": [1, 4, 20, 22], "add": [1, 4], "anyth": [1, 11], "rais": [1, 4, 6, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "when": [1, 2, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 24, 26, 27, 28], "omit": [1, 11, 20, 26], "none": [1, 4, 6, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24], "instanc": [1, 6, 11, 12, 16, 17, 20, 21, 22], "context": [1, 8, 16, 17, 19, 23, 25], "manag": [1, 4, 6, 12, 17, 19], "statement": [1, 11, 12, 17, 20, 24], "import_patch": [1, 2, 4, 24], "modulenam": 1, "additional_modul": [1, 24], "kw_additional_modul": [1, 24], "ensur": [1, 6, 11, 23], "standard": [1, 2, 4, 7, 8, 18, 25], "everyth": [1, 11, 24, 26], "nonblockingli": 1, "requir": [1, 4, 5, 6, 11, 12, 19, 22, 24], "name": [1, 5, 6, 11, 12, 22, 24, 26, 27], "For": [1, 4, 11, 14, 16, 18, 22, 23, 25, 26], "inform": [1, 9, 11, 24], "monkey_patch": [1, 24], "all": [1, 2, 4, 5, 11, 12, 14, 15, 16, 18, 21, 22, 23, 25, 26], "true": [1, 2, 4, 6, 11, 13, 14, 16, 18, 19, 20, 22, 23, 24, 27], "fals": [1, 4, 11, 13, 16, 17, 18, 19, 20, 22, 23], "global": [1, 2], "certain": [1, 11, 24], "system": [1, 6, 13, 24, 26], "friendli": 1, "keyword": [1, 9, 11, 12, 16, 20, 24], "afford": [1, 24], "some": [1, 2, 4, 5, 6, 11, 12, 16, 17, 19, 20, 23, 24, 25, 26, 27, 28], "regardless": [1, 11, 16], "specif": [1, 6, 11, 12, 16, 22, 26], "subsect": 1, "singl": [1, 9, 11, 12, 14, 15, 17, 21, 22, 23, 24], "present": [1, 14, 24, 26, 28], "safe": [1, 6, 24, 27], "monkeypatch": [1, 7, 27], "addr": [1, 4, 25], "famili": 1, "addressfamili": 1, "af_inet": [1, 25], "bind": [1, 11, 23, 24, 25, 26, 28], "paramet": [1, 11, 12, 15, 20, 22], "address": [1, 2, 4, 11, 22], "server": [1, 7, 8, 9, 23, 25, 26, 28], "tcp": [1, 28], "host": [1, 5, 12], "port": [1, 2, 7, 9, 22, 26], "tupl": [1, 9, 11, 14, 16, 18, 22], "local": [1, 6, 7, 8, 9, 26], "listen": [1, 2, 4, 6, 9, 13, 21, 22, 25, 26], "backlog": 1, "50": [1, 4, 25], "reuse_addr": 1, "reuse_port": 1, "serv": [1, 9, 11, 22, 26], "custom": [1, 22], "loop": [1, 2, 4, 5, 6, 9, 16, 22], "set": [1, 4, 9, 11, 12, 13, 16, 17, 19, 20, 21, 22, 23, 25, 27], "annoy": 1, "maximum": [1, 17, 18, 21, 22], "number": [1, 2, 4, 11, 12, 14, 15, 17, 18, 19, 22, 26], "queu": [1, 28], "1": [1, 2, 4, 11, 13, 14, 19, 20, 22, 23, 25, 26], "sock": [1, 9, 21, 22, 25], "convert": [1, 21], "regular": [1, 4], "interfac": [1, 24, 25, 27, 28], "wrap_socket": 1, "pyopenssl": [1, 7], "note": [1, 2, 3, 4, 14, 16, 21, 26], "ignor": [1, 4, 18, 19, 22, 23], "cert_req": 1, "ssl_version": 1, "ca_cert": 1, "do_handshake_on_connect": 1, "suppress_ragged_eof": 1, "idiom": [1, 2], "directli": [1, 11, 12, 14, 16, 20, 26], "creation": [1, 12], "server_sid": [1, 22], "nake": 1, "sit": 1, "accident": [1, 2], "corrupt": 1, "session": 1, "1000": [1, 2, 15], "suppli": [1, 6, 9, 16, 22, 27], "separ": [1, 15], "everi": [1, 4, 6, 11, 12, 13, 18, 19, 22, 24, 27], "incom": [1, 21, 28], "take": [1, 5, 11, 12, 14, 19, 28], "def": [1, 2, 4, 7, 11, 14, 15, 16, 17, 21, 22, 27], "myhandl": 1, "client_sock": [1, 26], "client_addr": 1, "print": [1, 2, 4, 7, 11, 12, 13, 14, 15, 16, 17, 22, 25, 26, 27], "127": [1, 4, 25, 26], "9999": 1, "block": [1, 2, 5, 9, 11, 12, 13, 15, 17, 18, 19, 20, 23, 25, 27], "won": [1, 2, 6, 20], "until": [1, 2, 6, 11, 14, 15, 16, 17, 18, 19, 23, 27], "complet": [1, 2, 6, 11, 15, 16, 18, 22, 23, 24, 26, 27], "desir": [1, 5, 6, 11, 16, 17, 27], "immedi": [1, 11, 14, 16, 18, 19], "new": [1, 2, 4, 9, 11, 12, 14, 15, 17, 18, 19, 23, 25, 27], "uncaught": [1, 11], "awar": [1, 11, 20, 23], "stopserv": 1, "gracefulli": 1, "rather": [1, 2, 4, 11, 26], "than": [1, 2, 4, 11, 12, 15, 16, 17, 18, 19, 22, 24, 25, 26], "hit": 1, "limit": [1, 2, 4, 12, 15, 17, 19, 20, 26], "stop": [1, 5, 11, 13], "exist": [1, 6, 11, 12, 15, 17, 26], "ones": [1, 4, 6, 11, 24, 26], "quit": [1, 4, 15, 24, 26], "These": [1, 3, 11, 26], "lot": 1, "check": [1, 11, 12, 17, 19, 20], "refer": [1, 7, 12, 14, 24], "There": [2, 15, 17, 19, 20, 26], "basic": [2, 7], "usag": [2, 7, 11], "fall": 2, "few": [2, 3, 5, 21, 24], "show": [2, 4], "canon": [2, 16], "side": 2, "web": [2, 7, 21, 22], "crawler": [2, 7], "given": [2, 6, 9, 11, 12, 13, 15, 16, 18, 19, 21], "url": [2, 4, 7, 22, 25], "bodi": [2, 4, 7, 9, 22, 25], "simpl": [2, 4, 7, 11, 21, 22], "urllib": [2, 4, 7, 25], "http": [2, 4, 5, 7, 17, 20, 22, 23, 25], "www": [2, 4, 7, 20, 23], "googl": [2, 4, 7, 20, 25], "com": [2, 4, 5, 7, 12, 20, 23, 25], "intl": [2, 4, 7], "en_al": [2, 4, 7], "imag": [2, 4, 7], "logo": [2, 4, 7], "gif": [2, 4, 7], "org": [2, 4, 7, 22, 23], "static": 2, "img": 2, "png": 2, "u": [2, 4, 7], "i1": [2, 4, 7], "yimg": [2, 4, 7], "ww": [2, 4, 7], "beta": [2, 4, 7], "y3": [2, 4, 7], "fetch": [2, 4, 7, 18, 25], "imap": [2, 4, 7, 11, 15], "got": [2, 4, 7, 11, 12, 17], "len": [2, 4, 7, 22], "slightli": [2, 21, 22], "complex": 2, "tour": 2, "interest": [2, 4, 18], "thousand": 2, "practic": [2, 6, 24], "upper": [2, 19], "come": [2, 11, 22, 24, 27], "handi": 2, "chang": [2, 6, 9, 11, 13, 15, 21, 23, 24, 26], "dramat": 2, "function": [2, 4, 7, 9, 11, 12, 13, 15, 16, 17, 20, 21, 22, 24, 26, 27], "order": [2, 5, 6, 11, 12, 17, 18, 19, 21, 26, 27], "kei": [2, 11, 22, 24, 25, 27, 28], "aspect": [2, 24], "involv": [2, 11, 22, 26], "collect": [2, 4, 12, 22, 27], "fact": [2, 11], "essenti": 2, "invis": 2, "optim": [2, 3], "bound": [2, 19, 22, 28], "gigabyt": 2, "grow": 2, "ten": 2, "ye": 2, "had": [2, 5, 6, 18], "problem": [2, 11, 20, 24], "product": [2, 11, 13], "onc": [2, 5, 11, 12, 14], "echo": [2, 7], "while": [2, 4, 11, 14, 22, 27, 28], "c": [2, 4, 11, 23, 27], "recv": [2, 4, 23], "break": [2, 4, 26], "6000": [2, 4], "10000": [2, 4], "new_sock": [2, 4], "file": [2, 4, 6, 13, 14, 15, 21, 22, 24, 26], "contain": [2, 4, 11, 12, 13, 16, 17, 22, 24, 26, 27], "somewhat": 2, "robust": 2, "creat": [2, 12, 14, 15, 16, 17, 18, 21, 22, 25], "could": [2, 4, 5, 11], "doesn": [2, 4, 6, 11, 12, 19, 20, 24, 26], "care": 2, "about": [2, 4, 5, 9, 11, 13, 14, 22, 24, 26], "spawn": [2, 4, 7, 8, 9, 11, 14, 15, 16, 22, 25, 26], "boil": 2, "repeatedli": [2, 14], "hand": [2, 4, 11, 28], "One": [2, 11, 22, 24, 26], "linden": [2, 5, 7], "lab": [2, 5, 7], "servic": 2, "aggreg": 2, "worker": [2, 4, 15], "appli": 2, "wa": [2, 5, 9, 11, 18, 19, 20, 23, 26], "contriv": 2, "receiv": [2, 13, 18, 23, 28], "rss": 2, "feed": [2, 7], "titl": [2, 4], "easi": [2, 6, 22, 25, 26], "imagin": [2, 19], "someth": 2, "easili": [2, 12], "modifi": [2, 17, 24], "becom": [2, 11, 12, 15, 19, 22], "reader": [2, 4], "style": [2, 5], "feedpars": [2, 4], "fetch_titl": [2, 4], "pars": [2, 4], "app": [2, 4], "start_respons": [2, 4, 22], "pile": [2, 4], "n": [2, 4, 22, 25], "join": [2, 4, 18], "200": [2, 4, 22], "ok": [2, 4, 19, 22], "content": [2, 4, 8, 22, 23], "type": [2, 4, 9, 11, 16, 20, 22, 23, 27, 28], "text": [2, 4, 22], "plain": [2, 4, 12, 22], "full": [2, 8, 18, 21, 22, 23, 26], "scraper": [2, 7], "includ": [2, 5, 9, 11, 12, 22, 23, 24, 26], "particular": [2, 12, 24, 26], "gasp": 2, "control": [2, 3, 4, 6, 7, 16, 24], "didn": 2, "outgo": [2, 23], "caus": [2, 6, 11, 12, 14, 16, 17, 22], "extern": [2, 5, 11], "therebi": 2, "feedscrap": [2, 4], "ip": [2, 4, 22], "ban": 2, "variou": 2, "purpos": [2, 25, 26], "bad": [2, 11], "isn": [2, 26], "protect": [2, 13], "bare": 2, "minimum": [2, 22], "That": [2, 11, 26], "ti": 2, "alreadi": [2, 4, 11, 12, 14, 15, 16, 17, 21, 22, 27], "those": [2, 4, 11, 22, 26, 27], "just": [2, 4, 11, 24, 25, 26], "store": [2, 11, 14], "kept": 2, "evid": 2, "next": [2, 11, 15, 16, 19], "4": [2, 7, 11, 12, 14, 17, 22], "where": [2, 11, 12, 14, 18, 22, 28], "element": [2, 24], "string": [2, 11, 13, 20, 21, 22, 23, 27], "concaten": 2, "increment": [2, 19], "happen": [2, 3, 6, 11, 19, 24], "advanc": 3, "user": [3, 7, 12, 22, 28], "eventlet_hub": [3, 6, 26], "forc": [3, 27], "specifi": [3, 6, 9, 11, 13, 14, 16, 17, 19, 22, 24], "mean": [3, 4, 6, 11, 12, 18, 22, 24, 26, 28], "pick": [3, 19], "silent": 3, "fail": [3, 11, 20, 23, 26], "equival": [3, 20, 24], "use_hub": [3, 6, 7], "begin": [3, 6, 12], "program": [3, 4, 6, 11], "eventlet_threadpool_s": [3, 27], "size": [3, 11, 15, 17, 18, 22, 27], "threadpool": 3, "befor": [3, 6, 9, 11, 12, 17, 19, 20, 22, 24, 27], "found": [4, 18, 23], "directori": [4, 5, 25, 26], "copi": [4, 23, 26], "usr": 4, "bin": 4, "env": [4, 22], "outbound": 4, "demonstr": 4, "truli": [4, 17], "made": [4, 7, 18], "length": [4, 21, 22], "fulli": [4, 22], "grace": [4, 21], "reload": 4, "hello_world": [4, 21, 22], "path_info": [4, 21], "404": 4, "Not": [4, 11, 26], "hello": [4, 21, 22, 25], "world": [4, 5, 7, 21, 22, 27], "8090": [4, 21, 22], "echoserv": 4, "back": [4, 6, 12, 17, 21, 22], "try": [4, 11, 12, 13, 14, 20, 24], "up": [4, 6, 9, 11, 12, 13, 15, 16, 17, 18, 19, 22, 25, 26], "telnet": [4, 9], "localhost": [4, 9, 12, 26], "typic": [4, 11, 18], "ctrl": 4, "__future__": 4, "print_funct": 4, "through": [4, 11, 12, 20], "non": [4, 5, 8, 11, 17, 23, 24, 25], "eof": 4, "x": [4, 22], "write": [4, 5, 6, 7, 13, 24, 25], "flush": 4, "end": 4, "disconnect": [4, 22], "makefil": [4, 20], "rw": 4, "systemexit": 4, "keyboardinterrupt": 4, "geturl": 4, "gethostbynam": 4, "80": 4, "1024": [4, 22, 25], "yandex": 4, "ru": 4, "act": [4, 17], "ll": [4, 26, 27], "zip": 4, "repr": [4, 25], "chat_serv": 4, "littl": [4, 6, 18, 26, 27], "broadcast": 4, "messag": [4, 21, 22, 23, 28], "particip": 4, "sender": 4, "3001": 4, "read_chat_forev": 4, "writer": 4, "strip": 4, "p": 4, "broken": [4, 21], "pipe": [4, 21, 27], "32": [4, 21], "remov": [4, 7, 12, 13, 16, 18], "left": [4, 11], "chatserv": 4, "new_connect": 4, "new_writ": 4, "exit": [4, 15, 16, 22], "instal": [4, 6, 13, 26], "pythonpath": [4, 26], "A": [4, 6, 11, 12, 15, 17, 18, 19, 21, 22, 24, 27, 28], "safeti": 4, "our": 4, "request_method": 4, "403": 4, "forbidden": 4, "sinc": [4, 24, 27], "sort": [4, 11, 24], "__name__": [4, 9, 11], "__main__": [4, 6], "9010": 4, "7000": 4, "callback": 4, "thing": [4, 9, 12, 14, 15, 16, 17, 19, 27], "framework": [4, 5, 6], "closed_callback": 4, "dest": 4, "cb": 4, "lambda": [4, 17], "byte": [4, 22, 23, 28], "unidirection": 4, "32384": 4, "unidirect": 4, "bidirect": 4, "recursive_crawl": 4, "seed": 4, "go": [4, 13, 22], "random": [4, 19, 27], "site": [4, 22], "robot": 4, "txt": 4, "pretti": 4, "brutal": 4, "quickli": 4, "short": [4, 13], "perhap": 4, "indic": [4, 11, 17, 18, 22], "effect": [4, 11, 12, 28], "primitv": 4, "doe": [4, 6, 9, 11, 13, 17, 19, 23, 26], "search": [4, 7], "dispatch": [4, 6, 7, 26], "coordin": 4, "cours": [4, 11, 24], "re": [4, 14, 20, 24, 25, 27], "daringfirebal": 4, "net": 4, "2009": 4, "11": 4, "liberal_regex_for_matching_url": 4, "url_regex": 4, "compil": [4, 11], "b": [4, 11, 14, 24, 25], "punct": 4, "seen": 4, "stick": [4, 9, 27], "5": [4, 7, 12, 17, 20], "decod": 4, "url_match": 4, "findit": 4, "new_url": 4, "group": [4, 23], "send": [4, 14, 21, 22, 23], "destroi": 4, "internet": 4, "seem": 4, "stack": [4, 13, 14, 16], "actual": [4, 11, 17, 22], "own": [4, 6, 11, 15, 16, 26, 27], "crawl": 4, "start_url": 4, "waital": [4, 11, 15], "saw": 4, "producer_consum": 4, "well": [4, 11, 22, 24, 26], "ident": 4, "kind": 4, "farm": [4, 15], "easier": [4, 11, 26], "arrang": [4, 14, 16], "tediou": 4, "yourself": [4, 6], "outq": 4, "push": [4, 19], "put": [4, 6, 12, 14, 17, 18, 22, 28], "q": 4, "keep": [4, 20, 25], "empti": [4, 8, 11, 17, 18, 20, 21, 22], "crash": 4, "exercis": [4, 26], "six": 4, "demo": 4, "websocketwsgi": [4, 8, 21], "handler": [4, 21], "base": [4, 5, 6, 12, 22, 23, 24, 26], "path": [4, 11, 21], "too": [4, 6, 11, 12, 19, 20], "m": 4, "elif": 4, "move": 4, "rang": 4, "resolv": 4, "els": [4, 11, 16, 18, 20], "html": [4, 22, 26], "dirnam": 4, "__file__": 4, "command": [4, 9, 25, 26], "nvisit": 4, "capabl": 4, "browser": [4, 21], "websocket_chat": 4, "mashup": 4, "final": [4, 11, 12, 20], "html_path": 4, "began": 5, "life": [5, 12], "talk": [5, 7], "network": [5, 7, 24, 26], "perform": [5, 9, 11, 16, 22, 24], "wonder": 5, "written": [5, 22, 23], "trampolin": [5, 6, 23], "awai": [5, 16, 26], "transpar": [5, 25, 28], "spent": 5, "dai": [5, 25], "dure": [5, 12, 24, 26], "pycon": 5, "2006": 5, "proof": 5, "he": 5, "greenlet": [5, 6, 9, 10, 13, 16, 18, 22, 27], "light": 5, "weight": 5, "hi": 5, "spare": 5, "pavel": 5, "unittest": [5, 26], "svn": 5, "red": 5, "bean": 5, "trunk": 5, "indra": 5, "lib": [5, 26], "yet": [5, 11, 21, 26], "backbon": 5, "restserv": 5, "howev": [5, 11], "meant": [5, 9], "develop": [5, 21], "updat": 5, "thu": [5, 6, 11, 15, 19, 22, 28], "tree": [5, 11, 26], "becam": 5, "fork": 5, "ceas": 5, "state": [5, 9, 13, 24], "forward": [5, 7, 22, 27], "form": [6, 18], "promot": 6, "tricki": 6, "tri": 6, "best": [6, 17, 24, 26], "epol": [6, 26], "linux": [6, 26], "On": 6, "platform": [6, 26], "lowest": [6, 18], "denomin": 6, "everywher": 6, "pyevent": [6, 27], "libev": 6, "backend": 6, "fastest": [6, 16], "disabl": [6, 16, 22], "default": [6, 11, 12, 16, 18, 19, 20, 21, 22, 26, 27], "nativ": [6, 24, 27], "enabl": 6, "them": [6, 11, 12, 13, 14, 19, 26, 27, 28], "ideal": 6, "either": [6, 11, 12, 16, 17, 20, 24, 25, 28], "variabl": [6, 7, 9, 21, 22, 26, 27], "elimin": 6, "old": 6, "descriptor": [6, 13, 22], "timer": [6, 12, 13, 20], "forgotten": 6, "necessari": [6, 11, 17, 18, 21], "special": [6, 11, 20], "let": [6, 11], "hybrid": 6, "configur": [6, 11, 25, 27], "fine": [6, 24], "third": 6, "parti": 6, "place": [6, 18, 24, 26], "task": [6, 15, 18], "beyond": 6, "scope": 6, "probabl": 6, "idea": [6, 16], "mypackag": 6, "myhub": 6, "mainloop": 6, "regist": [6, 13], "again": [6, 11, 12, 14, 19], "switch": [6, 9, 16, 27], "via": [6, 9, 17, 26, 27], "get_hub": 6, "readi": [6, 11, 14], "manner": [6, 23, 24], "lazi": 6, "why": 6, "turn": [6, 11], "without": [6, 11, 12, 13, 15, 16, 18, 19, 20], "substanti": 6, "restructur": 6, "singleton": 6, "consid": [6, 11, 13, 24], "intern": [6, 9, 12, 19], "api": [6, 7, 12, 18, 19, 22, 23], "might": [6, 11, 14, 16, 20, 21, 22, 23, 24, 26, 27], "unexpectedli": [6, 27], "deprec": [6, 7, 22], "get_default_hub": 6, "multiplex": 6, "kqueue": [6, 26], "automat": [6, 24], "timeout_exc": 6, "mark_as_clos": 6, "cpython": 7, "7": [7, 25], "futur": 7, "remain": [7, 12, 22, 27], "primari": [7, 12, 21, 27], "multi": [7, 18], "recurs": [7, 11], "produc": [7, 11, 18, 27], "With": [7, 11, 23, 27, 28], "\u00f8mq": [7, 8], "doctest": 7, "coverag": 7, "backdoor": [7, 8], "interact": [7, 8, 11, 21], "interpret": [7, 8], "within": [7, 8, 11, 16, 18, 20], "coroloc": [7, 8], "storag": [7, 8], "dagpool": [7, 8], "driven": [7, 8, 22], "tool": [7, 8, 22, 26], "db_pool": [7, 8], "dbapi": [7, 8], "databas": [7, 8, 27], "cross": [7, 8, 27], "resourc": [7, 8, 13, 19], "univers": [7, 8], "author": [7, 28], "maintain": [7, 12], "who": [7, 12, 17], "hassl": 7, "bug": [7, 19], "origin": [7, 11, 14, 21], "contributor": 7, "thank": 7, "histori": 7, "under": [7, 21, 24], "mit": 7, "index": 7, "socketconsol": [8, 9], "backdoor_serv": [8, 9], "get_id": [8, 10, 27], "rational": 8, "tutori": 8, "collis": [8, 11], "propagateerror": [8, 11], "format_hub_listen": [8, 13], "format_hub_tim": [8, 13], "hub_blocking_detect": [8, 13], "hub_except": [8, 13, 16], "hub_listener_stack": [8, 13], "hub_prevent_multiple_read": [8, 13], "hub_timer_stack": [8, 13], "spew": [8, 13], "tpool_except": [8, 13], "unspew": [8, 13], "constructor": 8, "databaseconnector": 8, "getcurr": [8, 16], "kill": [8, 11, 16, 22], "spawn_after_loc": [8, 16], "tokenpool": [8, 12, 17], "lifoqueu": [8, 18], "lightqueu": [8, 18], "priorityqueu": [8, 18], "boundedsemaphor": [8, 19], "cappedsemaphor": [8, 19], "with_timeout": [8, 20], "format_date_tim": [8, 22], "hook": [8, 13], "long": [9, 12, 13, 15, 20, 22], "tune": 9, "learn": 9, "situ": 9, "3000": 9, "build": [9, 11, 17], "info": [9, 22], "copyright": 9, "credit": 9, "licens": 9, "myapp": 9, "dir": 9, "__all__": 9, "__doc__": 9, "myfunc": 9, "observ": [9, 11], "desc": 9, "hostport": 9, "kwarg": [9, 12, 15, 16, 22, 23, 27], "never": [9, 11, 14, 18, 20], "self": [9, 14, 17, 25], "activ": [9, 22], "ed": 9, "resum": [9, 11, 13, 18], "dict": [9, 11], "dead": 9, "rule": [9, 24], "abov": [9, 11, 22], "conn_info": 9, "consol": [9, 26], "caller": [9, 11, 12, 16, 17, 20], "dictionari": [9, 12, 22], "id": 10, "situat": [11, 15, 19], "sever": [11, 12], "output": [11, 26], "strict": [11, 28], "exactli": [11, 19, 24, 25], "finish": [11, 15, 16, 22, 23], "But": [11, 13], "suffic": 11, "known": 11, "direct": [11, 19], "acycl": 11, "graph": 11, "dag": 11, "topolog": 11, "must": [11, 12, 14, 16, 17, 19, 20, 22, 24], "strictli": [11, 19], "constrain": 11, "upstream": 11, "appropri": [11, 26], "serial": [11, 21], "guarante": 11, "even": [11, 16, 22], "answer": 11, "associ": [11, 15], "distinct": 11, "Then": 11, "identifi": 11, "plu": 11, "whose": [11, 23], "uniqu": [11, 17], "uuid": 11, "reason": [11, 12, 23, 24, 26, 27], "pair": [11, 22, 24, 28], "deliv": [11, 18], "coupl": 11, "languag": 11, "precompil": 11, "suppos": [11, 12, 17], "zlib": 11, "both": [11, 12, 18, 24, 26], "builder": 11, "libnam": 11, "build_product_for_kei": 11, "As": [11, 20, 21, 22, 25], "posit": [11, 13, 18, 19, 20], "cflag": 11, "linkflag": 11, "o2": 11, "pie": 11, "uniform": 11, "altern": 11, "spawn_mani": 11, "dep": 11, "outsid": [11, 20], "obtain": 11, "last": [11, 14, 20], "format": [11, 13, 14, 22, 26], "alia": [11, 12], "Or": 11, "soon": 11, "still": [11, 12, 20, 21], "dprog": 11, "whether": [11, 12, 13, 16, 18, 22, 24], "__getitem": 11, "__": 11, "shorthand": 11, "contrast": 11, "Of": 11, "explicit": [11, 12], "henc": 11, "implicitli": 11, "notdon": 11, "upload": 11, "ve": [11, 12, 24], "wait_each": 11, "whatev": [11, 12, 16, 17], "sai": 11, "shown": [11, 22], "constern": 11, "stuck": 11, "hmm": 11, "often": [11, 13], "ask": 11, "running_kei": 11, "item": [11, 12, 14, 15, 17, 18], "result_from_a": 11, "reflect": 11, "underli": [11, 22, 25], "waiting_for": 11, "keyerror": 11, "aha": 11, "forgot": 11, "pprint": 11, "unblock": [11, 18, 19], "rebuild": 11, "result_from_zlib": 11, "nontrivi": 11, "realtim": 11, "record": [11, 13], "partial": [11, 17], "interrupt": [11, 13], "restart": 11, "prior": 11, "proce": 11, "nor": [11, 17], "forev": [11, 22], "originalerror": 11, "wrap": [11, 20, 21, 22, 23, 25, 26, 27], "failur": 11, "subclass": [11, 12, 17, 18, 23], "attribut": [11, 27], "exc": [11, 14], "attempt": [11, 19], "unless": 11, "similarli": 11, "someon": 11, "programmat": 11, "chase": 11, "determin": [11, 12, 13], "orig_err": 11, "err": 11, "unknown": 11, "isinst": [11, 27], "neither": 11, "useless": [11, 12], "arriv": [11, 23], "difficult": 11, "did": 11, "succe": [11, 23], "wait_each_success": 11, "succeed": 11, "although": 11, "five": 11, "chain": 11, "enumer": 11, "wait_each_except": 11, "__class__": 11, "wrapper": [11, 12, 27], "notic": 11, "alwai": [11, 18, 20, 22, 23], "categor": 11, "correspond": [11, 12, 17], "twice": 11, "str": [11, 22, 23], "max": [11, 15, 17], "flow": 11, "straightforwardli": 11, "complic": 11, "node": [11, 25], "implicit": 11, "callabl": [11, 20], "newli": 11, "enter": 11, "setup": [11, 26, 28], "At": [11, 22], "initi": [11, 18, 19], "chronolog": 11, "forth": [11, 21], "ultim": 11, "follow": [11, 16, 21, 22, 23, 25, 26], "discov": 11, "recommend": 11, "hard": [11, 13, 17], "provabl": 11, "avoid": [11, 14, 24], "deadlock": [11, 15], "__init__": 11, "prepopul": 11, "__getitem__": 11, "aka": 11, "snapshot": 11, "replac": [11, 24], "relev": 11, "eventu": 11, "catch": [11, 20], "discard": 11, "previous": 11, "value1": 11, "value2": 11, "unspecifi": 11, "versu": 11, "subsequ": [11, 18], "exceptionsubclass": 11, "kwd": [11, 20], "return_valu": 11, "encount": 11, "downstream": 11, "indetermin": [11, 17], "successfulli": [11, 16], "word": [11, 12, 17], "deliveri": [11, 28], "intention": 11, "decoupl": 11, "sequenc": [11, 24], "arbitrari": [11, 14], "distinguish": 11, "stopiter": [11, 15], "now": [11, 12], "gotten": [11, 18], "By": [11, 16, 21, 27], "implic": 11, "filter": 11, "necessarili": 11, "natur": 11, "unlik": [11, 18], "Its": 11, "diagnos": 11, "hung": 11, "progress": 11, "three": [12, 23], "benefit": [12, 24], "reus": [12, 14], "intend": [12, 20], "agnost": 12, "db": 12, "psycopg2": [12, 24], "connectionpool": 12, "softwar": 12, "credenti": 12, "authent": 12, "decid": [12, 24], "target": [12, 16], "cp": 12, "root": 12, "passwd": 12, "conn": 12, "cursor": [12, 27], "addit": [12, 13, 16, 20, 22], "min_siz": [12, 17], "max_siz": [12, 17, 22], "destin": 12, "max_idl": 12, "unus": 12, "asynchron": [12, 28], "period": 12, "idl": 12, "longer": 12, "tend": 12, "high": [12, 17], "water": [12, 17], "mark": [12, 17], "peak": 12, "histor": 12, "demand": 12, "upon": [12, 24], "max_ag": 12, "lifespan": 12, "measur": 12, "throughout": 12, "lengthi": 12, "exce": [12, 17, 19], "taken": 12, "connect_timeout": 12, "connecttimeout": 12, "alik": 12, "map": 12, "hostnam": 12, "dc": 12, "s33kr1t": 12, "whenev": [12, 17, 18], "entri": [12, 18, 19], "conn_pool": 12, "caveat": [12, 20], "bit": 12, "unfinish": [12, 18], "suit": [12, 15], "subset": 12, "baseconnectionpool": 12, "db_modul": 12, "10": 12, "30": [12, 20], "cleanup": 12, "cleanup_rollback": 12, "clear": [12, 13], "obj": [12, 17, 27], "token": [12, 17], "tpooledconnectionpool": 12, "credentials_for": 12, "dbname": 12, "schema": 12, "genericconnectionwrapp": 12, "baseconn": 12, "affected_row": 12, "autocommit": 12, "change_us": 12, "character_set_nam": 12, "commit": 12, "dump_debug_info": 12, "errno": [12, 21], "errorhandl": 12, "insert_id": 12, "ping": 12, "queri": 12, "rollback": 12, "select_db": 12, "server_cap": 12, "set_character_set": 12, "set_isolation_level": 12, "set_server_opt": 12, "set_sql_mod": 12, "show_warn": 12, "shutdown": [12, 25], "sqlstate": 12, "stat": 12, "store_result": 12, "string_liter": 12, "thread_id": 12, "use_result": 12, "warning_count": 12, "pooledconnectionwrapp": 12, "bool": [12, 23], "garbag": 12, "rawconnectionpool": 12, "classmethod": 12, "previou": [12, 17], "util": 13, "power": [13, 25], "especi": 13, "conjunct": [13, 27], "resolut": 13, "toggl": 13, "effort": 13, "tell": [13, 18, 26], "kernel": 13, "sigalarm": 13, "therefor": [13, 24, 27], "detector": 13, "govern": 13, "signal": 13, "setitim": 13, "float": [13, 14, 16, 20], "shorter": 13, "greater": [13, 17, 19], "moment": [13, 22], "critic": 13, "junctur": 13, "logic": 13, "predict": 13, "achiev": [13, 27], "realli": 13, "against": [13, 24], "mistak": 13, "trace_nam": 13, "show_valu": 13, "trace": [13, 14, 16], "stdout": 13, "abstract": [14, 15, 28], "similar": [14, 18], "unschedul": 14, "evt": 14, "baz": 14, "_": 14, "visit": 14, "waiter": 14, "woken": [14, 18], "parent": [14, 16, 27], "whoop": 14, "traceback": [14, 20, 22], "recent": [14, 18, 20], "assertionerror": 14, "trigger": [14, 20], "reset": 14, "send_except": 14, "stacktrac": 14, "runtimeerror": 14, "stdin": 14, "120": 14, "throw": 14, "_exc": 14, "preserv": 14, "entir": [14, 24, 26], "sy": [14, 22, 24], "exc_info": [14, 16], "cycl": [14, 17], "wait_on": 14, "retval": 14, "occur": [14, 20], "fraction": [14, 16], "thereof": 14, "size_or_pool": 15, "standalon": 15, "integ": [15, 16, 19], "advis": 15, "earli": [15, 22, 24], "zero": [15, 17, 18, 19], "less": [15, 18, 19, 22, 28], "slot": [15, 18], "itertool": 15, "starmap": 15, "do_someth": 15, "filenam": [15, 26], "resiz": [15, 17, 18], "new_siz": [15, 17], "enough": [15, 26], "drop": [15, 18], "overal": 15, "quantiti": 15, "below": 15, "neg": [15, 19], "capac": [15, 19], "reentrant": 15, "risk": 15, "whole": 15, "constant": 15, "proport": 15, "extrem": 15, "properti": [16, 19, 21, 23], "throw_arg": 16, "hasn": 16, "greenletexit": [16, 22], "curried_arg": 16, "curried_kwarg": 16, "signatur": 16, "gt": 16, "curri": 16, "interfer": 16, "otherwis": [16, 18, 19, 23], "unavoid": 16, "frame": [16, 21, 23], "right": [16, 17], "elig": 16, "express": [16, 17], "larg": 16, "expens": 16, "calcul": 16, "occasion": [16, 26], "noth": 16, "mere": 16, "opportun": 16, "NOT": 16, "order_as_stack": 17, "http_pool": 17, "httplib2": [17, 24], "nullari": 17, "90": 17, "functool": 17, "defin": [17, 22, 24], "mypool": 17, "myobject": 17, "dostuff": 17, "runtim": [17, 24], "min": 17, "popul": 17, "cannot": [17, 20, 22], "adjust": 17, "affect": 17, "match": [17, 27], "routin": 17, "opaqu": 17, "synchron": [18, 28], "across": 18, "multiprocess": 18, "channel": 18, "maxsiz": 18, "qsize": 18, "get_nowait": 18, "put_nowait": 18, "variant": 18, "mostli": 18, "stdlib_queu": 18, "task_don": 18, "overhead": [18, 27], "enqueu": 18, "increas": 18, "putter": 18, "prioriti": 18, "infinit": 18, "resembl": 18, "count": [18, 19], "goe": 18, "formerli": 18, "valueerror": [18, 19, 23], "unbound": 19, "releas": 19, "nonzero": 19, "sem": 19, "do_some_stuff": 19, "invok": 19, "counter": 19, "larger": 19, "decrement": 19, "proper": 19, "interlock": 19, "awaken": 19, "reli": [19, 24], "balanc": 19, "account": 19, "guard": 19, "sign": [19, 25], "blockingli": 19, "reach": 19, "semant": [19, 28], "subtli": 19, "due": 19, "opposit": 19, "doc": [19, 25], "revers": 19, "suppress": 20, "mysock": 20, "plan": 20, "rare": [20, 24], "cpu": 20, "baseexcept": [20, 22], "mind": 20, "silenc": 20, "my": 20, "unexpect": 20, "section": [20, 22], "int": [20, 23], "timeout_valu": 20, "took": 20, "tweak": 21, "coexist": 21, "decor": 21, "pleas": [21, 25], "warn": 21, "elabor": [21, 22], "13": 21, "spec": [21, 22], "76": 21, "deseri": 21, "protocol": [21, 22], "forcibli": 21, "unicod": [21, 23], "utf": 21, "oldest": 21, "valid": 21, "max_frame_length": 21, "8388608": 21, "my_handl": 21, "from_brows": 21, "closur": 21, "uncompress": 21, "payload": [21, 22], "8mib": 21, "attack": 21, "vector": 21, "embed": 22, "packag": [22, 24, 26], "timestamp": 22, "unix": 22, "max_http_vers": 22, "httpprotocol": 22, "server_ev": 22, "log_x_forwarded_for": 22, "custom_pool": 22, "keepal": 22, "log_output": 22, "log_format": 22, "client_ip": 22, "date_tim": 22, "request_lin": 22, "status_cod": 22, "body_length": 22, "wall_second": 22, "6f": 22, "url_length_limit": 22, "8192": 22, "socket_timeout": 22, "capitalize_response_head": 22, "usabl": 22, "insid": 22, "inherit": [22, 24], "problemat": 22, "hang": 22, "logger": 22, "sent": [22, 23], "level": 22, "stderr": 22, "pretend": 22, "properli": 22, "technic": 22, "violat": 22, "overridden": [22, 23], "minimum_write_chunk_s": 22, "field": 22, "boolean": 22, "templat": 22, "exceed": 22, "414": 22, "500": 22, "foo": [22, 26], "bar": 22, "secur": [22, 25], "certfil": 22, "cert": [22, 25], "crt": 22, "keyfil": 22, "privat": [22, 25], "url_schem": 22, "posthook": 22, "arrai": 22, "arg1": 22, "arg2": 22, "kwarg3": 22, "kwarg4": 22, "append": 22, "accur": 22, "bandwidth": 22, "provision": 22, "expect": 22, "transact": 22, "characterist": 22, "accompani": 22, "encrypt": 22, "unencrypt": 22, "decis": 22, "mandat": 22, "mechan": 22, "pep333": 22, "set_hundred_continue_response_head": 22, "wsgi_app": 22, "hundr": 22, "h1": 22, "k": 22, "hk": 22, "statu": 22, "wsgi_test": 22, "test_024a_expect_100_continue_with_head": 22, "rfc": 22, "7231": 22, "ietf": 22, "rfc7231": 22, "6": 22, "sampl": 22, "evenlet": 22, "export": 22, "send_hundred_continue_respons": 22, "scenario": 22, "test_024b_expect_100_continue_with_headers_multiple_chunk": 22, "test_024c_expect_100_continue_with_headers_multiple_nonchunk": 22, "pyzmq": 23, "cython": 23, "io_thread": 23, "socket_typ": 23, "core": 23, "defer": 23, "eagain": 23, "send_multipart": 23, "recv_multipart": 23, "zmqerror": 23, "poller": 23, "notif": 23, "msg": 23, "zmq_msg_recv": 23, "io": 23, "space": 23, "memoryview": 23, "sndmore": 23, "routing_id": 23, "radio": 23, "messagetrack": 23, "typeerror": 23, "untrack": 23, "17": 23, "draft": 23, "github": 23, "challeng": 24, "past": 24, "action": 24, "un": 24, "engin": 24, "appar": 24, "asyncor": 24, "lack": [24, 26], "rescu": 24, "builtin": 24, "module_nam": 24, "hood": 24, "temporarili": 24, "swap": 24, "restor": 24, "weak": 24, "approach": 24, "late": 24, "fortun": [24, 27], "slow": 24, "abil": [24, 26], "slight": 24, "wherea": 24, "socketserv": 24, "basehttpserv": 24, "disadvantag": 24, "appear": 24, "magic": 24, "psycopg": 24, "lifetim": 24, "sometim": [24, 26], "deriv": 24, "branch": 24, "announc": 24, "is_monkey_patch": 24, "counterpart": 25, "fashion": 25, "secondlif": 25, "certif": 25, "genrsa": 25, "req": 25, "x509": 25, "sha1": 25, "365": 25, "sake": 25, "insecur": 25, "sslv23_method": 25, "use_privatekey_fil": 25, "use_certificate_fil": 25, "sock_stream": [25, 28], "set_accept_st": 25, "8443": 25, "shop": 25, "client_conn": 25, "sslsocket": 25, "issuer": 25, "nose": 26, "plugin": 26, "nosetest": 26, "lastli": 26, "big": 26, "skip": 26, "environment": 26, "factor": 26, "sens": 26, "16": 26, "verifi": 26, "stdlib": 26, "stub": 26, "distribut": 26, "imped": 26, "mismatch": 26, "weird": 26, "look": 26, "20": [26, 27], "sub": 26, "printout": 26, "ran": 26, "001": 26, "usual": 26, "miss": 26, "download": 26, "tarbal": 26, "convent": [26, 28], "foo_test": 26, "finer": 26, "granular": 26, "sensibl": 26, "foo_class_test": 26, "hardcod": 26, "harder": 26, "server_sock": 26, "getsocknam": 26, "awesom": 26, "evalu": 26, "cover": 26, "emit": 26, "huge": 26, "wodg": 26, "inclus": 26, "soup": 26, "annot": 26, "dump": 26, "tempmod": 26, "thrown": 26, "smart": 26, "confin": 27, "themselv": 27, "real": 27, "vast": 27, "simpler": 27, "simplest": 27, "my_func": 27, "starting_id": 27, "autowrap": 27, "autowrap_nam": 27, "invoc": 27, "onto": 27, "nonblock": 27, "meth": 27, "amen": 27, "trick": 27, "cost": 27, "inject": 28, "mix": 28, "radioact": 28, "isotop": 28, "stolen": 28, "secret": 28, "soviet": 28, "atom": 28, "research": 28, "bombard": 28, "1950": 28, "era": 28, "cosmic": 28, "rai": 28, "drug": 28, "addl": 28, "comic": 28, "book": 28, "badli": 28, "disguis": 28, "fetish": 28, "bulg": 28, "muscl": 28, "clad": 28, "spandex": 28, "speak": 28, "orient": 28, "reliabl": 28, "stream": 28, "unreli": 28, "datagram": 28, "sock_dgram": 28, "comparison": 28, "0mq": 28, "transfer": 28, "discret": 28, "physic": 28, "teardown": 28, "reconnect": 28, "organ": 28, "further": 28, "peer": 28, "unavail": 28, "multicast": 28, "relationship": 28, "endpoint": 28}, "objects": {"eventlet": [[1, 0, 1, "", "GreenPile"], [1, 0, 1, "", "GreenPool"], [1, 0, 1, "", "Queue"], [1, 0, 1, "", "StopServe"], [1, 0, 1, "", "Timeout"], [9, 1, 0, "-", "backdoor"], [1, 3, 1, "", "connect"], [10, 1, 0, "-", "corolocal"], [11, 1, 0, "-", "dagpool"], [12, 1, 0, "-", "db_pool"], [13, 1, 0, "-", "debug"], [14, 1, 0, "-", "event"], [15, 1, 0, "-", "greenpool"], [16, 1, 0, "-", "greenthread"], [1, 3, 1, "", "import_patched"], [1, 3, 1, "", "listen"], [1, 3, 1, "", "monkey_patch"], [17, 1, 0, "-", "pools"], [18, 1, 0, "-", "queue"], [1, 3, 1, "", "serve"], [1, 3, 1, "", "sleep"], [1, 3, 1, "", "spawn"], [1, 3, 1, "", "spawn_after"], [1, 3, 1, "", "spawn_n"], [27, 1, 0, "-", "tpool"], [21, 1, 0, "-", "websocket"], [1, 3, 1, "", "wrap_ssl"], [22, 1, 0, "-", "wsgi"]], "eventlet.backdoor": [[9, 0, 1, "", "SocketConsole"], [9, 3, 1, "", "backdoor"], [9, 3, 1, "", "backdoor_server"]], "eventlet.backdoor.SocketConsole": [[9, 2, 1, "", "switch"]], "eventlet.corolocal": [[10, 3, 1, "", "get_ident"], [10, 0, 1, "", "local"]], "eventlet.dagpool": [[11, 4, 1, "", "Collision"], [11, 0, 1, "", "DAGPool"], [11, 4, 1, "", "PropagateError"]], "eventlet.dagpool.DAGPool": [[11, 2, 1, "", "__getitem__"], [11, 2, 1, "", "__init__"], [11, 2, 1, "", "get"], [11, 2, 1, "", "items"], [11, 2, 1, "", "keys"], [11, 2, 1, "", "kill"], [11, 2, 1, "", "post"], [11, 2, 1, "", "running"], [11, 2, 1, "", "running_keys"], [11, 2, 1, "", "spawn"], [11, 2, 1, "", "spawn_many"], [11, 2, 1, "", "wait"], [11, 2, 1, "", "wait_each"], [11, 2, 1, "", "wait_each_exception"], [11, 2, 1, "", "wait_each_success"], [11, 2, 1, "", "waitall"], [11, 2, 1, "", "waiting"], [11, 2, 1, "", "waiting_for"]], "eventlet.db_pool": [[12, 0, 1, "", "BaseConnectionPool"], [12, 4, 1, "", "ConnectTimeout"], [12, 5, 1, "", "ConnectionPool"], [12, 0, 1, "", "DatabaseConnector"], [12, 0, 1, "", "GenericConnectionWrapper"], [12, 0, 1, "", "PooledConnectionWrapper"], [12, 0, 1, "", "RawConnectionPool"], [12, 0, 1, "", "TpooledConnectionPool"], [12, 3, 1, "", "cleanup_rollback"]], "eventlet.db_pool.BaseConnectionPool": [[12, 2, 1, "", "clear"], [12, 2, 1, "", "get"], [12, 2, 1, "", "item"], [12, 2, 1, "", "put"]], "eventlet.db_pool.DatabaseConnector": [[12, 2, 1, "", "credentials_for"], [12, 2, 1, "", "get"]], "eventlet.db_pool.GenericConnectionWrapper": [[12, 2, 1, "", "affected_rows"], [12, 2, 1, "", "autocommit"], [12, 2, 1, "", "begin"], [12, 2, 1, "", "change_user"], [12, 2, 1, "", "character_set_name"], [12, 2, 1, "", "close"], [12, 2, 1, "", "commit"], [12, 2, 1, "", "cursor"], [12, 2, 1, "", "dump_debug_info"], [12, 2, 1, "", "errno"], [12, 2, 1, "", "error"], [12, 2, 1, "", "errorhandler"], [12, 2, 1, "", "insert_id"], [12, 2, 1, "", "literal"], [12, 2, 1, "", "ping"], [12, 2, 1, "", "query"], [12, 2, 1, "", "rollback"], [12, 2, 1, "", "select_db"], [12, 2, 1, "", "server_capabilities"], [12, 2, 1, "", "set_character_set"], [12, 2, 1, "", "set_isolation_level"], [12, 2, 1, "", "set_server_option"], [12, 2, 1, "", "set_sql_mode"], [12, 2, 1, "", "show_warnings"], [12, 2, 1, "", "shutdown"], [12, 2, 1, "", "sqlstate"], [12, 2, 1, "", "stat"], [12, 2, 1, "", "store_result"], [12, 2, 1, "", "string_literal"], [12, 2, 1, "", "thread_id"], [12, 2, 1, "", "use_result"], [12, 2, 1, "", "warning_count"]], "eventlet.db_pool.PooledConnectionWrapper": [[12, 2, 1, "", "close"]], "eventlet.db_pool.RawConnectionPool": [[12, 2, 1, "", "connect"], [12, 2, 1, "", "create"]], "eventlet.db_pool.TpooledConnectionPool": [[12, 2, 1, "", "connect"], [12, 2, 1, "", "create"]], "eventlet.debug": [[13, 3, 1, "", "format_hub_listeners"], [13, 3, 1, "", "format_hub_timers"], [13, 3, 1, "", "hub_blocking_detection"], [13, 3, 1, "", "hub_exceptions"], [13, 3, 1, "", "hub_listener_stacks"], [13, 3, 1, "", "hub_prevent_multiple_readers"], [13, 3, 1, "", "hub_timer_stacks"], [13, 3, 1, "", "spew"], [13, 3, 1, "", "tpool_exceptions"], [13, 3, 1, "", "unspew"]], "eventlet.event": [[14, 0, 1, "", "Event"]], "eventlet.event.Event": [[14, 2, 1, "", "ready"], [14, 2, 1, "", "send"], [14, 2, 1, "", "send_exception"], [14, 2, 1, "", "wait"]], "eventlet.green": [[23, 1, 0, "-", "zmq"]], "eventlet.green.zmq": [[23, 0, 1, "", "Context"], [23, 0, 1, "", "Socket"]], "eventlet.green.zmq.Context": [[23, 2, 1, "", "socket"]], "eventlet.green.zmq.Socket": [[23, 2, 1, "", "recv"], [23, 2, 1, "", "send"]], "eventlet.greenpool": [[15, 0, 1, "", "GreenPile"], [15, 0, 1, "", "GreenPool"]], "eventlet.greenpool.GreenPile": [[15, 2, 1, "", "next"], [15, 2, 1, "", "spawn"]], "eventlet.greenpool.GreenPool": [[15, 2, 1, "", "free"], [15, 2, 1, "", "imap"], [15, 2, 1, "", "resize"], [15, 2, 1, "", "running"], [15, 2, 1, "", "spawn"], [15, 2, 1, "", "spawn_n"], [15, 2, 1, "", "starmap"], [15, 2, 1, "", "waitall"], [15, 2, 1, "", "waiting"]], "eventlet.greenthread": [[16, 0, 1, "", "GreenThread"], [16, 3, 1, "", "getcurrent"], [16, 3, 1, "", "kill"], [16, 3, 1, "", "sleep"], [16, 3, 1, "", "spawn"], [16, 3, 1, "", "spawn_after"], [16, 3, 1, "", "spawn_after_local"], [16, 3, 1, "", "spawn_n"]], "eventlet.greenthread.GreenThread": [[16, 2, 1, "", "cancel"], [16, 2, 1, "", "kill"], [16, 2, 1, "", "link"], [16, 2, 1, "", "unlink"], [16, 2, 1, "", "wait"]], "eventlet.hubs": [[6, 3, 1, "", "get_default_hub"], [6, 3, 1, "", "get_hub"], [6, 3, 1, "", "trampoline"], [6, 3, 1, "", "use_hub"]], "eventlet.patcher": [[24, 3, 1, "", "import_patched"], [24, 3, 1, "", "is_monkey_patched"], [24, 3, 1, "", "monkey_patch"]], "eventlet.pools": [[17, 0, 1, "", "Pool"], [17, 0, 1, "", "TokenPool"]], "eventlet.pools.Pool": [[17, 2, 1, "", "create"], [17, 2, 1, "", "free"], [17, 2, 1, "", "get"], [17, 2, 1, "", "item"], [17, 2, 1, "", "put"], [17, 2, 1, "", "resize"], [17, 2, 1, "", "waiting"]], "eventlet.pools.TokenPool": [[17, 2, 1, "", "create"]], "eventlet.queue": [[18, 4, 1, "", "Empty"], [18, 4, 1, "", "Full"], [18, 0, 1, "", "LifoQueue"], [18, 0, 1, "", "LightQueue"], [18, 0, 1, "", "PriorityQueue"], [18, 0, 1, "", "Queue"]], "eventlet.queue.LightQueue": [[18, 2, 1, "", "empty"], [18, 2, 1, "", "full"], [18, 2, 1, "", "get"], [18, 2, 1, "", "get_nowait"], [18, 2, 1, "", "getting"], [18, 2, 1, "", "put"], [18, 2, 1, "", "put_nowait"], [18, 2, 1, "", "putting"], [18, 2, 1, "", "qsize"], [18, 2, 1, "", "resize"]], "eventlet.queue.Queue": [[18, 2, 1, "", "join"], [18, 2, 1, "", "task_done"]], "eventlet.semaphore": [[19, 0, 1, "", "BoundedSemaphore"], [19, 0, 1, "", "CappedSemaphore"], [19, 0, 1, "", "Semaphore"]], "eventlet.semaphore.BoundedSemaphore": [[19, 2, 1, "", "release"]], "eventlet.semaphore.CappedSemaphore": [[19, 2, 1, "", "acquire"], [19, 6, 1, "", "balance"], [19, 2, 1, "", "bounded"], [19, 2, 1, "", "locked"], [19, 2, 1, "", "release"]], "eventlet.semaphore.Semaphore": [[19, 2, 1, "", "acquire"], [19, 6, 1, "", "balance"], [19, 2, 1, "", "bounded"], [19, 2, 1, "", "locked"], [19, 2, 1, "", "release"]], "eventlet.timeout": [[20, 0, 1, "", "Timeout"], [20, 3, 1, "", "with_timeout"]], "eventlet.timeout.eventlet.timeout.Timeout.Timeout": [[20, 2, 1, "", "cancel"], [20, 5, 1, "", "pending"]], "eventlet.tpool": [[27, 0, 1, "", "Proxy"], [27, 3, 1, "", "execute"]], "eventlet.websocket": [[21, 0, 1, "", "WebSocket"], [21, 0, 1, "", "WebSocketWSGI"]], "eventlet.websocket.WebSocket": [[21, 2, 1, "", "close"], [21, 2, 1, "", "send"], [21, 2, 1, "", "wait"]], "eventlet.wsgi": [[22, 3, 1, "", "format_date_time"], [22, 3, 1, "", "server"]], "": [[23, 1, 0, "-", "zmq"]]}, "objtypes": {"0": "py:class", "1": "py:module", "2": "py:method", "3": "py:function", "4": "py:exception", "5": "py:attribute", "6": "py:property"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "module", "Python module"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"], "4": ["py", "exception", "Python exception"], "5": ["py", "attribute", "Python attribute"], "6": ["py", "property", "Python property"]}, "titleterms": {"author": 0, "maintain": 0, "i": [0, 28], "e": 0, "who": 0, "To": 0, "hassl": 0, "If": 0, "you": 0, "find": 0, "bug": 0, "origin": 0, "contributor": 0, "linden": 0, "lab": 0, "thank": 0, "basic": 1, "usag": 1, "primari": 1, "api": [1, 28], "greenthread": [1, 11, 14, 16], "spawn": 1, "control": 1, "patch": 1, "function": [1, 6], "network": 1, "conveni": 1, "design": 2, "pattern": 2, "client": 2, "server": [2, 4, 21, 22], "dispatch": 2, "environ": 3, "variabl": 3, "exampl": [4, 11], "web": 4, "crawler": 4, "wsgi": [4, 22], "echo": 4, "socket": 4, "connect": [4, 12], "multi": 4, "user": 4, "chat": 4, "feed": 4, "scraper": 4, "port": 4, "forward": 4, "recurs": 4, "produc": 4, "consum": 4, "websocket": [4, 21], "histori": 5, "understand": 6, "eventlet": [6, 7, 13, 23, 25, 26], "hub": [6, 26], "how": 6, "work": 6, "more": 6, "relat": 6, "document": [7, 28], "support": [7, 22, 23], "python": [7, 9], "version": 7, "content": [7, 11], "licens": 7, "indic": 7, "tabl": 7, "modul": [8, 11], "refer": 8, "backdoor": 9, "interact": 9, "interpret": 9, "within": 9, "run": 9, "process": 9, "coroloc": 10, "coroutin": 10, "local": 10, "storag": 10, "dagpool": 11, "depend": 11, "driven": 11, "rational": 11, "tutori": 11, "introspect": 11, "post": [11, 22], "preload": 11, "except": 11, "propag": 11, "scan": 11, "success": 11, "db_pool": 12, "dbapi": 12, "2": 12, "databas": 12, "pool": [12, 15, 17, 27], "constructor": 12, "argument": 12, "databaseconnector": 12, "debug": 13, "tool": 13, "event": 14, "cross": 14, "primit": 14, "greenpool": 15, "green": [15, 16, 23, 24], "thread": [15, 16, 27], "implement": 16, "gener": 17, "resourc": 17, "queue": 18, "class": [18, 19], "semaphor": 19, "timeout": 20, "univers": 20, "ssl": [22, 25], "non": 22, "standard": [22, 24, 26], "extens": 22, "hook": 22, "100": 22, "continu": 22, "respons": 22, "header": 22, "zmq": 23, "\u00f8mq": [23, 28], "paramet": 23, "return": 23, "rais": 23, "The": 24, "world": 24, "import": 24, "monkeypatch": 24, "librari": [24, 26], "us": 25, "With": 25, "pyopenssl": 25, "test": 26, "doctest": 26, "write": 26, "coverag": 26, "tpool": 27, "simpl": 27, "zeromq": 28, "what": 28}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 57}, "alltitles": {"Authors": [[0, "authors"]], "Maintainer (i.e., Who To Hassle If You Find Bugs)": [[0, "maintainer-i-e-who-to-hassle-if-you-find-bugs"]], "Original Authors": [[0, "original-authors"]], "Contributors": [[0, "contributors"]], "Linden Lab Contributors": [[0, "linden-lab-contributors"]], "Thanks To": [[0, "thanks-to"]], "Basic Usage": [[1, "basic-usage"]], "Primary API": [[1, "primary-api"]], "Greenthread Spawn": [[1, "greenthread-spawn"]], "Greenthread Control": [[1, "greenthread-control"]], "Patching Functions": [[1, "patching-functions"]], "Network Convenience Functions": [[1, "network-convenience-functions"]], "Design Patterns": [[2, "design-patterns"]], "Client Pattern": [[2, "client-pattern"]], "Server Pattern": [[2, "server-pattern"]], "Dispatch Pattern": [[2, "dispatch-pattern"]], "Environment Variables": [[3, "environment-variables"]], "Examples": [[4, "examples"]], "Web Crawler": [[4, "web-crawler"]], "WSGI Server": [[4, "wsgi-server"]], "Echo Server": [[4, "echo-server"]], "Socket Connect": [[4, "socket-connect"]], "Multi-User Chat Server": [[4, "multi-user-chat-server"]], "Feed Scraper": [[4, "feed-scraper"]], "Port Forwarder": [[4, "port-forwarder"]], "Recursive Web Crawler": [[4, "recursive-web-crawler"]], "Producer Consumer Web Crawler": [[4, "producer-consumer-web-crawler"]], "Websocket Server Example": [[4, "websocket-server-example"]], "Websocket Multi-User Chat Example": [[4, "websocket-multi-user-chat-example"]], "History": [[5, "history"]], "Understanding Eventlet Hubs": [[6, "understanding-eventlet-hubs"]], "How the Hubs Work": [[6, "how-the-hubs-work"]], "More Hub-Related Functions": [[6, "more-hub-related-functions"]], "Eventlet Documentation": [[7, "eventlet-documentation"]], "Supported Python versions": [[7, "supported-python-versions"]], "Contents": [[7, "contents"]], "License": [[7, "license"]], "Indices and tables": [[7, "indices-and-tables"]], "Module Reference": [[8, "module-reference"]], "backdoor \u2013 Python interactive interpreter within a running process": [[9, "backdoor-python-interactive-interpreter-within-a-running-process"]], "corolocal \u2013 Coroutine local storage": [[10, "module-eventlet.corolocal"]], "dagpool \u2013 Dependency-Driven Greenthreads": [[11, "dagpool-dependency-driven-greenthreads"]], "Rationale": [[11, "rationale"]], "Tutorial": [[11, "tutorial"]], "Example": [[11, "example"]], "Introspection": [[11, "introspection"]], "Posting": [[11, "posting"]], "Preloading": [[11, "preloading"]], "Exception Propagation": [[11, "exception-propagation"]], "Scanning for Success / Exceptions": [[11, "scanning-for-success-exceptions"]], "Module Contents": [[11, "module-eventlet.dagpool"]], "db_pool \u2013 DBAPI 2 database connection pooling": [[12, "db-pool-dbapi-2-database-connection-pooling"]], "Constructor Arguments": [[12, "constructor-arguments"]], "DatabaseConnector": [[12, "databaseconnector"]], "debug \u2013 Debugging tools for Eventlet": [[13, "module-eventlet.debug"]], "event \u2013 Cross-greenthread primitive": [[14, "module-eventlet.event"]], "greenpool \u2013 Green Thread Pools": [[15, "module-eventlet.greenpool"]], "greenthread \u2013 Green Thread Implementation": [[16, "module-eventlet.greenthread"]], "pools - Generic pools of resources": [[17, "module-eventlet.pools"]], "queue \u2013 Queue class": [[18, "module-eventlet.queue"]], "semaphore \u2013 Semaphore classes": [[19, "semaphore-semaphore-classes"]], "timeout \u2013 Universal Timeouts": [[20, "timeout-universal-timeouts"]], "websocket \u2013 Websocket Server": [[21, "websocket-websocket-server"]], "wsgi \u2013 WSGI server": [[22, "wsgi-wsgi-server"]], "SSL": [[22, "ssl"]], "Non-Standard Extension to Support Post Hooks": [[22, "non-standard-extension-to-support-post-hooks"]], "\u201c100 Continue\u201d Response Headers": [[22, "continue-response-headers"]], "eventlet.green.zmq \u2013 \u00d8MQ support": [[23, "eventlet-green-zmq-omq-support"]], "Parameters": [[23, "parameters"], [23, "id6"]], "Returns": [[23, "returns"], [23, "id7"]], "Raises": [[23, "raises"], [23, "id8"]], "Greening The World": [[24, "greening-the-world"]], "Import Green": [[24, "import-green"]], "Monkeypatching the Standard Library": [[24, "monkeypatching-the-standard-library"]], "Using SSL With Eventlet": [[25, "using-ssl-with-eventlet"]], "PyOpenSSL": [[25, "pyopenssl"]], "Testing Eventlet": [[26, "testing-eventlet"]], "Doctests": [[26, "doctests"]], "Standard Library Tests": [[26, "standard-library-tests"]], "Testing Eventlet Hubs": [[26, "testing-eventlet-hubs"]], "Writing Tests": [[26, "writing-tests"]], "Coverage": [[26, "coverage"]], "Threads": [[27, "threads"]], "Tpool - Simple thread pool": [[27, "tpool-simple-thread-pool"]], "Zeromq": [[28, "zeromq"]], "What is \u00d8MQ?": [[28, "what-is-omq"]], "API documentation": [[28, "api-documentation"]]}, "indexentries": {"stopserve (class in eventlet)": [[1, "eventlet.StopServe"]], "built-in function": [[1, "eventlet.import_patched"], [1, "eventlet.monkey_patch"], [1, "eventlet.sleep"], [1, "eventlet.spawn"], [1, "eventlet.spawn_after"], [1, "eventlet.spawn_n"], [6, "eventlet.hubs.use_hub"], [20, "eventlet.timeout.with_timeout"], [24, "eventlet.patcher.import_patched"], [24, "eventlet.patcher.is_monkey_patched"], [24, "eventlet.patcher.monkey_patch"]], "connect() (in module eventlet)": [[1, "eventlet.connect"]], "eventlet.greenpile (built-in class)": [[1, "eventlet.GreenPile"]], "eventlet.greenpool (built-in class)": [[1, "eventlet.GreenPool"]], "eventlet.queue (built-in class)": [[1, "eventlet.Queue"]], "eventlet.timeout (built-in class)": [[1, "eventlet.Timeout"]], "eventlet.import_patched()": [[1, "eventlet.import_patched"]], "eventlet.monkey_patch()": [[1, "eventlet.monkey_patch"]], "eventlet.sleep()": [[1, "eventlet.sleep"]], "eventlet.spawn()": [[1, "eventlet.spawn"]], "eventlet.spawn_after()": [[1, "eventlet.spawn_after"]], "eventlet.spawn_n()": [[1, "eventlet.spawn_n"]], "listen() (in module eventlet)": [[1, "eventlet.listen"]], "serve() (in module eventlet)": [[1, "eventlet.serve"]], "wrap_ssl() (in module eventlet)": [[1, "eventlet.wrap_ssl"]], "eventlet.hubs.use_hub()": [[6, "eventlet.hubs.use_hub"]], "get_default_hub() (in module eventlet.hubs)": [[6, "eventlet.hubs.get_default_hub"]], "get_hub() (in module eventlet.hubs)": [[6, "eventlet.hubs.get_hub"]], "trampoline() (in module eventlet.hubs)": [[6, "eventlet.hubs.trampoline"]], "socketconsole (class in eventlet.backdoor)": [[9, "eventlet.backdoor.SocketConsole"]], "backdoor() (in module eventlet.backdoor)": [[9, "eventlet.backdoor.backdoor"]], "backdoor_server() (in module eventlet.backdoor)": [[9, "eventlet.backdoor.backdoor_server"]], "eventlet.backdoor": [[9, "module-eventlet.backdoor"]], "module": [[9, "module-eventlet.backdoor"], [10, "module-eventlet.corolocal"], [11, "module-eventlet.dagpool"], [12, "module-eventlet.db_pool"], [13, "module-eventlet.debug"], [14, "module-eventlet.event"], [15, "module-eventlet.greenpool"], [16, "module-eventlet.greenthread"], [17, "module-eventlet.pools"], [18, "module-eventlet.queue"], [21, "module-eventlet.websocket"], [22, "module-eventlet.wsgi"], [23, "module-eventlet.green.zmq"], [23, "module-zmq"], [27, "module-eventlet.tpool"]], "switch() (eventlet.backdoor.socketconsole method)": [[9, "eventlet.backdoor.SocketConsole.switch"]], "eventlet.corolocal": [[10, "module-eventlet.corolocal"]], "get_ident() (in module eventlet.corolocal)": [[10, "eventlet.corolocal.get_ident"]], "local (class in eventlet.corolocal)": [[10, "eventlet.corolocal.local"]], "collision": [[11, "eventlet.dagpool.Collision"]], "dagpool (class in eventlet.dagpool)": [[11, "eventlet.dagpool.DAGPool"]], "propagateerror": [[11, "eventlet.dagpool.PropagateError"]], "__getitem__() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.__getitem__"]], "__init__() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.__init__"]], "eventlet.dagpool": [[11, "module-eventlet.dagpool"]], "get() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.get"]], "items() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.items"]], "keys() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.keys"]], "kill() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.kill"]], "post() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.post"]], "running() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.running"]], "running_keys() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.running_keys"]], "spawn() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.spawn"]], "spawn_many() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.spawn_many"]], "wait() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.wait"]], "wait_each() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.wait_each"]], "wait_each_exception() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.wait_each_exception"]], "wait_each_success() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.wait_each_success"]], "waitall() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.waitall"]], "waiting() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.waiting"]], "waiting_for() (eventlet.dagpool.dagpool method)": [[11, "eventlet.dagpool.DAGPool.waiting_for"]], "baseconnectionpool (class in eventlet.db_pool)": [[12, "eventlet.db_pool.BaseConnectionPool"]], "connecttimeout": [[12, "eventlet.db_pool.ConnectTimeout"]], "connectionpool (in module eventlet.db_pool)": [[12, "eventlet.db_pool.ConnectionPool"]], "databaseconnector (class in eventlet.db_pool)": [[12, "eventlet.db_pool.DatabaseConnector"]], "genericconnectionwrapper (class in eventlet.db_pool)": [[12, "eventlet.db_pool.GenericConnectionWrapper"]], "pooledconnectionwrapper (class in eventlet.db_pool)": [[12, "eventlet.db_pool.PooledConnectionWrapper"]], "rawconnectionpool (class in eventlet.db_pool)": [[12, "eventlet.db_pool.RawConnectionPool"]], "tpooledconnectionpool (class in eventlet.db_pool)": [[12, "eventlet.db_pool.TpooledConnectionPool"]], "affected_rows() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.affected_rows"]], "autocommit() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.autocommit"]], "begin() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.begin"]], "change_user() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.change_user"]], "character_set_name() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.character_set_name"]], "cleanup_rollback() (in module eventlet.db_pool)": [[12, "eventlet.db_pool.cleanup_rollback"]], "clear() (eventlet.db_pool.baseconnectionpool method)": [[12, "eventlet.db_pool.BaseConnectionPool.clear"]], "close() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.close"]], "close() (eventlet.db_pool.pooledconnectionwrapper method)": [[12, "eventlet.db_pool.PooledConnectionWrapper.close"]], "commit() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.commit"]], "connect() (eventlet.db_pool.rawconnectionpool class method)": [[12, "eventlet.db_pool.RawConnectionPool.connect"]], "connect() (eventlet.db_pool.tpooledconnectionpool class method)": [[12, "eventlet.db_pool.TpooledConnectionPool.connect"]], "create() (eventlet.db_pool.rawconnectionpool method)": [[12, "eventlet.db_pool.RawConnectionPool.create"]], "create() (eventlet.db_pool.tpooledconnectionpool method)": [[12, "eventlet.db_pool.TpooledConnectionPool.create"]], "credentials_for() (eventlet.db_pool.databaseconnector method)": [[12, "eventlet.db_pool.DatabaseConnector.credentials_for"]], "cursor() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.cursor"]], "dump_debug_info() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.dump_debug_info"]], "errno() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.errno"]], "error() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.error"]], "errorhandler() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.errorhandler"]], "eventlet.db_pool": [[12, "module-eventlet.db_pool"]], "get() (eventlet.db_pool.baseconnectionpool method)": [[12, "eventlet.db_pool.BaseConnectionPool.get"]], "get() (eventlet.db_pool.databaseconnector method)": [[12, "eventlet.db_pool.DatabaseConnector.get"]], "insert_id() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.insert_id"]], "item() (eventlet.db_pool.baseconnectionpool method)": [[12, "eventlet.db_pool.BaseConnectionPool.item"]], "literal() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.literal"]], "ping() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.ping"]], "put() (eventlet.db_pool.baseconnectionpool method)": [[12, "eventlet.db_pool.BaseConnectionPool.put"]], "query() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.query"]], "rollback() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.rollback"]], "select_db() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.select_db"]], "server_capabilities() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.server_capabilities"]], "set_character_set() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.set_character_set"]], "set_isolation_level() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.set_isolation_level"]], "set_server_option() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.set_server_option"]], "set_sql_mode() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.set_sql_mode"]], "show_warnings() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.show_warnings"]], "shutdown() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.shutdown"]], "sqlstate() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.sqlstate"]], "stat() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.stat"]], "store_result() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.store_result"]], "string_literal() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.string_literal"]], "thread_id() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.thread_id"]], "use_result() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.use_result"]], "warning_count() (eventlet.db_pool.genericconnectionwrapper method)": [[12, "eventlet.db_pool.GenericConnectionWrapper.warning_count"]], "eventlet.debug": [[13, "module-eventlet.debug"]], "format_hub_listeners() (in module eventlet.debug)": [[13, "eventlet.debug.format_hub_listeners"]], "format_hub_timers() (in module eventlet.debug)": [[13, "eventlet.debug.format_hub_timers"]], "hub_blocking_detection() (in module eventlet.debug)": [[13, "eventlet.debug.hub_blocking_detection"]], "hub_exceptions() (in module eventlet.debug)": [[13, "eventlet.debug.hub_exceptions"]], "hub_listener_stacks() (in module eventlet.debug)": [[13, "eventlet.debug.hub_listener_stacks"]], "hub_prevent_multiple_readers() (in module eventlet.debug)": [[13, "eventlet.debug.hub_prevent_multiple_readers"]], "hub_timer_stacks() (in module eventlet.debug)": [[13, "eventlet.debug.hub_timer_stacks"]], "spew() (in module eventlet.debug)": [[13, "eventlet.debug.spew"]], "tpool_exceptions() (in module eventlet.debug)": [[13, "eventlet.debug.tpool_exceptions"]], "unspew() (in module eventlet.debug)": [[13, "eventlet.debug.unspew"]], "event (class in eventlet.event)": [[14, "eventlet.event.Event"]], "eventlet.event": [[14, "module-eventlet.event"]], "ready() (eventlet.event.event method)": [[14, "eventlet.event.Event.ready"]], "send() (eventlet.event.event method)": [[14, "eventlet.event.Event.send"]], "send_exception() (eventlet.event.event method)": [[14, "eventlet.event.Event.send_exception"]], "wait() (eventlet.event.event method)": [[14, "eventlet.event.Event.wait"]], "greenpile (class in eventlet.greenpool)": [[15, "eventlet.greenpool.GreenPile"]], "greenpool (class in eventlet.greenpool)": [[15, "eventlet.greenpool.GreenPool"]], "eventlet.greenpool": [[15, "module-eventlet.greenpool"]], "free() (eventlet.greenpool.greenpool method)": [[15, "eventlet.greenpool.GreenPool.free"]], "imap() (eventlet.greenpool.greenpool method)": [[15, "eventlet.greenpool.GreenPool.imap"]], "next() (eventlet.greenpool.greenpile method)": [[15, "eventlet.greenpool.GreenPile.next"]], "resize() (eventlet.greenpool.greenpool method)": [[15, "eventlet.greenpool.GreenPool.resize"]], "running() (eventlet.greenpool.greenpool method)": [[15, "eventlet.greenpool.GreenPool.running"]], "spawn() (eventlet.greenpool.greenpile method)": [[15, "eventlet.greenpool.GreenPile.spawn"]], "spawn() (eventlet.greenpool.greenpool method)": [[15, "eventlet.greenpool.GreenPool.spawn"]], "spawn_n() (eventlet.greenpool.greenpool method)": [[15, "eventlet.greenpool.GreenPool.spawn_n"]], "starmap() (eventlet.greenpool.greenpool method)": [[15, "eventlet.greenpool.GreenPool.starmap"]], "waitall() (eventlet.greenpool.greenpool method)": [[15, "eventlet.greenpool.GreenPool.waitall"]], "waiting() (eventlet.greenpool.greenpool method)": [[15, "eventlet.greenpool.GreenPool.waiting"]], "greenthread (class in eventlet.greenthread)": [[16, "eventlet.greenthread.GreenThread"]], "cancel() (eventlet.greenthread.greenthread method)": [[16, "eventlet.greenthread.GreenThread.cancel"]], "eventlet.greenthread": [[16, "module-eventlet.greenthread"]], "getcurrent() (in module eventlet.greenthread)": [[16, "eventlet.greenthread.getcurrent"]], "kill() (eventlet.greenthread.greenthread method)": [[16, "eventlet.greenthread.GreenThread.kill"]], "kill() (in module eventlet.greenthread)": [[16, "eventlet.greenthread.kill"]], "link() (eventlet.greenthread.greenthread method)": [[16, "eventlet.greenthread.GreenThread.link"]], "sleep() (in module eventlet.greenthread)": [[16, "eventlet.greenthread.sleep"]], "spawn() (in module eventlet.greenthread)": [[16, "eventlet.greenthread.spawn"]], "spawn_after() (in module eventlet.greenthread)": [[16, "eventlet.greenthread.spawn_after"]], "spawn_after_local() (in module eventlet.greenthread)": [[16, "eventlet.greenthread.spawn_after_local"]], "spawn_n() (in module eventlet.greenthread)": [[16, "eventlet.greenthread.spawn_n"]], "unlink() (eventlet.greenthread.greenthread method)": [[16, "eventlet.greenthread.GreenThread.unlink"]], "wait() (eventlet.greenthread.greenthread method)": [[16, "eventlet.greenthread.GreenThread.wait"]], "pool (class in eventlet.pools)": [[17, "eventlet.pools.Pool"]], "tokenpool (class in eventlet.pools)": [[17, "eventlet.pools.TokenPool"]], "create() (eventlet.pools.pool method)": [[17, "eventlet.pools.Pool.create"]], "create() (eventlet.pools.tokenpool method)": [[17, "eventlet.pools.TokenPool.create"]], "eventlet.pools": [[17, "module-eventlet.pools"]], "free() (eventlet.pools.pool method)": [[17, "eventlet.pools.Pool.free"]], "get() (eventlet.pools.pool method)": [[17, "eventlet.pools.Pool.get"]], "item() (eventlet.pools.pool method)": [[17, "eventlet.pools.Pool.item"]], "put() (eventlet.pools.pool method)": [[17, "eventlet.pools.Pool.put"]], "resize() (eventlet.pools.pool method)": [[17, "eventlet.pools.Pool.resize"]], "waiting() (eventlet.pools.pool method)": [[17, "eventlet.pools.Pool.waiting"]], "empty": [[18, "eventlet.queue.Empty"]], "full": [[18, "eventlet.queue.Full"]], "lifoqueue (class in eventlet.queue)": [[18, "eventlet.queue.LifoQueue"]], "lightqueue (class in eventlet.queue)": [[18, "eventlet.queue.LightQueue"]], "priorityqueue (class in eventlet.queue)": [[18, "eventlet.queue.PriorityQueue"]], "queue (class in eventlet.queue)": [[18, "eventlet.queue.Queue"]], "empty() (eventlet.queue.lightqueue method)": [[18, "eventlet.queue.LightQueue.empty"]], "eventlet.queue": [[18, "module-eventlet.queue"]], "full() (eventlet.queue.lightqueue method)": [[18, "eventlet.queue.LightQueue.full"]], "get() (eventlet.queue.lightqueue method)": [[18, "eventlet.queue.LightQueue.get"]], "get_nowait() (eventlet.queue.lightqueue method)": [[18, "eventlet.queue.LightQueue.get_nowait"]], "getting() (eventlet.queue.lightqueue method)": [[18, "eventlet.queue.LightQueue.getting"]], "join() (eventlet.queue.queue method)": [[18, "eventlet.queue.Queue.join"]], "put() (eventlet.queue.lightqueue method)": [[18, "eventlet.queue.LightQueue.put"]], "put_nowait() (eventlet.queue.lightqueue method)": [[18, "eventlet.queue.LightQueue.put_nowait"]], "putting() (eventlet.queue.lightqueue method)": [[18, "eventlet.queue.LightQueue.putting"]], "qsize() (eventlet.queue.lightqueue method)": [[18, "eventlet.queue.LightQueue.qsize"]], "resize() (eventlet.queue.lightqueue method)": [[18, "eventlet.queue.LightQueue.resize"]], "task_done() (eventlet.queue.queue method)": [[18, "eventlet.queue.Queue.task_done"]], "boundedsemaphore (class in eventlet.semaphore)": [[19, "eventlet.semaphore.BoundedSemaphore"]], "cappedsemaphore (class in eventlet.semaphore)": [[19, "eventlet.semaphore.CappedSemaphore"]], "semaphore (class in eventlet.semaphore)": [[19, "eventlet.semaphore.Semaphore"]], "acquire() (eventlet.semaphore.cappedsemaphore method)": [[19, "eventlet.semaphore.CappedSemaphore.acquire"]], "acquire() (eventlet.semaphore.semaphore method)": [[19, "eventlet.semaphore.Semaphore.acquire"]], "balance (eventlet.semaphore.cappedsemaphore property)": [[19, "eventlet.semaphore.CappedSemaphore.balance"]], "balance (eventlet.semaphore.semaphore property)": [[19, "eventlet.semaphore.Semaphore.balance"]], "bounded() (eventlet.semaphore.cappedsemaphore method)": [[19, "eventlet.semaphore.CappedSemaphore.bounded"]], "bounded() (eventlet.semaphore.semaphore method)": [[19, "eventlet.semaphore.Semaphore.bounded"]], "locked() (eventlet.semaphore.cappedsemaphore method)": [[19, "eventlet.semaphore.CappedSemaphore.locked"]], "locked() (eventlet.semaphore.semaphore method)": [[19, "eventlet.semaphore.Semaphore.locked"]], "release() (eventlet.semaphore.boundedsemaphore method)": [[19, "eventlet.semaphore.BoundedSemaphore.release"]], "release() (eventlet.semaphore.cappedsemaphore method)": [[19, "eventlet.semaphore.CappedSemaphore.release"]], "release() (eventlet.semaphore.semaphore method)": [[19, "eventlet.semaphore.Semaphore.release"]], "cancel() (eventlet.timeout.eventlet.timeout.timeout.timeout method)": [[20, "eventlet.timeout.eventlet.timeout.Timeout.Timeout.cancel"]], "eventlet.timeout.timeout (built-in class)": [[20, "eventlet.timeout.Timeout"]], "eventlet.timeout.with_timeout()": [[20, "eventlet.timeout.with_timeout"]], "pending (eventlet.timeout.eventlet.timeout.timeout.timeout attribute)": [[20, "eventlet.timeout.eventlet.timeout.Timeout.Timeout.pending"]], "websocket (class in eventlet.websocket)": [[21, "eventlet.websocket.WebSocket"]], "websocketwsgi (class in eventlet.websocket)": [[21, "eventlet.websocket.WebSocketWSGI"]], "close() (eventlet.websocket.websocket method)": [[21, "eventlet.websocket.WebSocket.close"]], "eventlet.websocket": [[21, "module-eventlet.websocket"]], "send() (eventlet.websocket.websocket method)": [[21, "eventlet.websocket.WebSocket.send"]], "wait() (eventlet.websocket.websocket method)": [[21, "eventlet.websocket.WebSocket.wait"]], "eventlet.wsgi": [[22, "module-eventlet.wsgi"]], "format_date_time() (in module eventlet.wsgi)": [[22, "eventlet.wsgi.format_date_time"]], "server() (in module eventlet.wsgi)": [[22, "eventlet.wsgi.server"]], "context (class in eventlet.green.zmq)": [[23, "eventlet.green.zmq.Context"]], "socket (class in eventlet.green.zmq)": [[23, "eventlet.green.zmq.Socket"]], "eventlet.green.zmq": [[23, "module-eventlet.green.zmq"]], "recv() (eventlet.green.zmq.socket method)": [[23, "eventlet.green.zmq.Socket.recv"]], "send() (eventlet.green.zmq.socket method)": [[23, "eventlet.green.zmq.Socket.send"]], "socket() (eventlet.green.zmq.context method)": [[23, "eventlet.green.zmq.Context.socket"]], "zmq": [[23, "module-zmq"]], "eventlet.patcher.import_patched()": [[24, "eventlet.patcher.import_patched"]], "eventlet.patcher.is_monkey_patched()": [[24, "eventlet.patcher.is_monkey_patched"]], "eventlet.patcher.monkey_patch()": [[24, "eventlet.patcher.monkey_patch"]], "proxy (class in eventlet.tpool)": [[27, "eventlet.tpool.Proxy"]], "eventlet.tpool": [[27, "module-eventlet.tpool"]], "execute() (in module eventlet.tpool)": [[27, "eventlet.tpool.execute"]]}})