On 2016-10-07 1:31 PM, Giampaolo Rodola' wrote:
On Fri, Oct 7, 2016 at 6:52 PM, Yury Selivanov
wrote: On 2016-10-07 11:16 AM, Guido van Rossum wrote:
Maybe a simpler approach would be to write a linter that checks for a
known list of common blocking functions, and anything that calls those automatically gets the same property?
What if somebody uses logging module and logs to a file? I think this is something that linters can't infer (how logging is configured).
One way to solve this would be to monkeypatch the io and os modules (gevent does that, so it's possible) to issue a warning when it's used in an asyncio context. This can be done as a module on PyPI.
Another way would be to add some kind of IO tracing hooks to CPython.
How about something like this? http://www.tornadoweb.org/en/stable/ioloop.html#tornado.ioloop.IOLoop.set_bl...
Yes, we already have a similar mechanism in asyncio -- loop.slow_callback_duration property that is used in debug mode. The thing it isn't really precise, as you can have a lot of relatively fast blocking calls that harm performance, but complete faster than slow_callback_duration. Yury