2015-12-28 30 views
7

python3.5垃圾邮件当我在Python 3.5使ASYNCIO调试,我得到的消息是这样,几乎每一秒钟:ASYNCIO与INFO

INFO:asyncio:poll 999.470 ms took 1001.159 ms: timeout 
INFO:asyncio:poll 999.264 ms took 1001.092 ms: timeout 
INFO:asyncio:poll 999.454 ms took 1001.059 ms: timeout 

下面是一个最小的代码重新产生此问题:

import asyncio 
import logging 
logging.basicConfig(level=logging.DEBUG) 
loop = asyncio.get_event_loop() 
loop.set_debug(True) 

async def f(delay): 
    for i in range(10): 
     await asyncio.sleep(delay) 

loop.run_until_complete(f(0.5)) 
# (nothing printed) 
loop.run_until_complete(f(1)) 
# INFO:asyncio:poll 999.470 ms took 1001.159 ms: timeout 
# INFO:asyncio:poll 999.264 ms took 1001.092 ms: timeout 
# INFO:asyncio:poll 999.454 ms took 1001.059 ms: timeout 
# ... 
loop.run_until_complete(f(2)) 
# INFO:asyncio:poll 1999.427 ms took 2001.112 ms: timeout 
# INFO:asyncio:poll 1999.393 ms took 2001.088 ms: timeout 
# INFO:asyncio:poll 1999.709 ms took 2001.758 ms: timeout 
# ... 

如果sleep延迟是大于1秒更小的,但是,这不打印的消息,如果它是> = 1

那是预期的行为?我怎样才能避免这样的消息?

Muffin framework工作时发现的问题。

+0

看来,这个问题的根源在于'aiohttp' Web框架的gunicorn工人:https://github.com/KeepSafe/aiohttp/blob/master/aiohttp/worker.py#L97 - 它调用asyncio.sleep( 1.0)当服务器不忙时导致这个消息。 – MarSoft

回答

1

可以设置日志记录级别ASYNCIO模块,例如:

logging.getLogger('asyncio').setLevel(logging.WARNING) # Remove asyncio debug and info messages, but leave warnings. 

顺便说一句,read about测井名系统一般:

name是一个潜在的时间段隔开的分层值,像 foo.bar.baz(虽然它也可能只是简单的foo,例如)。 层次列表中进一步向下的记录器是列表中较高位置的 记录器的子项。例如,给定具有名称 的foo的记录器,名称为foo.bar,foo.bar.bazfoo.bam的记录器是 的所有后代foo。如果您使用推荐的建设 logging.getLogger(__name__)组织在每个模块为基础的 记录器记录器名称层次是类似于 Python包的层次结构,并等同于它。这是因为在模块中,__name__是 模块在Python包名称空间中的名称。