in teamcity/output.py [0:0]
def retry_on_EAGAIN(callable):
# output seems to be non-blocking when running under teamcity.
@wraps(callable)
def wrapped(*args, **kwargs):
start_time = _time()
while True:
try:
return callable(*args, **kwargs)
except IOError as e:
if e.errno != errno.EAGAIN:
raise
# Give up after a minute.
if _time() - start_time > 60:
raise
time.sleep(.1)
return wrapped