为什么龙卷风AsyncHTTPClient在从jupyter笔记本运行时表现不同?

时间:2017-01-28 13:28:05

标签: python tornado jupyter-notebook

我试图在jupyter-notebook上运行以下代码

from tornado.httpclient import AsyncHTTPClient
from tornado.ioloop import IOLoop

async def fetch_coroutine(url):
    http_client = AsyncHTTPClient()
    response = await http_client.fetch(url)
    return response.body

url = 'http://www.tornadoweb.org/en/stable/'

loop = IOLoop.current()
loop.run_sync(lambda : fetch_coroutine(url))

它不断给我以下错误:

RuntimeError: IOLoop is already running

但是,如果我只是在ipython终端中运行它,那么它会按预期运行。

知道为什么它不能在jupyter笔记本中运行吗?

我在python3上,龙卷风版本4.4.2

1 个答案:

答案 0 :(得分:1)

Jupyter在内部使用Tornado,因此IOLoop.current()指的是Jupyter已经开始的IOLoop。使上述代码工作的最简单方法是创建一个新的IOLoop:使用loop = IOLoop()而不是loop = IOLoop.current()