Python中文
首页
教程
问答
标签
搜索
登录
注册
asyncio是否已经在运行一个嵌套的事件循环?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我想用一组类别执行web抓取,每个类别也有一个url列表。所以我决定只根据main函数中的每个类别调用一个函数,在内部函数中有一个非阻塞调用。在</p> <p>代码如下:</p> <pre><code>def main(): loop = asyncio.get_event_loop() b = loop.create_task(f("p", all_p_list)) f = loop.create_task(f("f", all_f_list)) loop.run_until_complete(asyncio.gather(p, f)) </code></pre> <p>它应该同时执行<code>f</code>函数。在</p> <p>但是<code>f</code>函数也必须运行循环,因为在该函数中,它基于每个URL同时调用一个函数。在</p> ^{pr2}$ <p>但是在我运行脚本之后,它得到了一个<code>This event loop is already running</code>错误,我发现这是因为我在内部和外部函数中调用了<code>loop.run_until_complete()</code>。在</p> <p>但是,当我去掉<code>run_until_complete()</code>,在<code>main()</code>中调用<code>f()</code>,函数调用立即完成,它不能等待内部函数完成。因此在<code>main()</code>中调用循环是不可避免的。但我认为它与内部函数不相容,内部函数也必须调用它。在</p> <p>如何处理问题并运行循环?最初的代码都在同一个<code>main()</code>中,并且工作正常,但是如果可能的话,我想让它更干净。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>将<code>main()</code>转换为异步函数并由<code>loop.run_until_complete()</code>执行。在</p> <p>当代码只有一个<code>run_until_complete()</code>时,一切都变得简单多了。在Python3.7中,您将能够只编写<code>asyncio.run(main())</code></p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django restfram生成PDF
6 回答
无法使用Django Rest框架发送压缩的gzip数据
3 回答
无法使用Django rest框架进行身份验证(请求用户=匿名用户)
2 回答
无法使用Django、Python和JavaScrip触发onclick函数
6 回答
无法使用Django.views.generic.View保存表单
7 回答
无法使用Django(python 2.7,OS X 10.11.1)
8 回答
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
10 回答
无法使用Django\u mssql\u后端迁移到外部hos
1 回答
无法使用Django&Python3.4连接到MySql
1 回答
无法使用Django+nginx上载媒体文件
2 回答
无法使用Django1.6导入名称模式
10 回答
无法使用Django1.7和mongodb登录管理站点
10 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
6 回答
无法使用Djangockedi验证CBV中的字段
3 回答
无法使用Djangocketditor上载图像(错误400)
10 回答
无法使用Djangocron进行函数调用
4 回答
无法使用Djangofiler djang上载文件
9 回答
无法使用Djangokronos
9 回答
无法使用Djangomssql provid
5 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
8 回答