You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Scrapy fetch命令触发RuntimeError(无事件循环)的求助

解决Scrapy Shell中fetch()触发的"There is no current event loop"错误

问题场景

在Ubuntu 22.04 LTS的PyCharm虚拟环境中运行Scrapy Shell,执行fetch('https://kwejk.pl/')时触发以下错误:

RuntimeError: There is no current event loop in thread 'Thread-1 (start)'.

修复方案

方案1:修改Scrapy的defer.py文件(临时快速修复)

找到虚拟环境中Scrapy的defer.py文件,路径示例:/home/poppap/PycharmProjects/pythonProject/venv/lib/python3.10/site-packages/scrapy/utils/defer.py
打开文件后定位到deferred_from_coro函数,将原代码:

event_loop = get_asyncio_event_loop_policy().get_event_loop()

替换为:

try:
    event_loop = get_asyncio_event_loop_policy().get_event_loop()
except RuntimeError:
    event_loop = get_asyncio_event_loop_policy().new_event_loop()
    get_asyncio_event_loop_policy().set_event_loop(event_loop)

保存文件后重新启动Scrapy Shell即可。
注意:此修改会在Scrapy版本升级后被覆盖,适合临时解决问题。

方案2:安装兼容Python3.10的Scrapy版本

Python3.10与部分旧版Scrapy存在asyncio兼容问题,安装指定兼容版本即可彻底解决:

pip install scrapy==2.7.1

方案3:使用系统终端替代PyCharm内置终端

PyCharm内置终端的线程环境可能导致事件循环异常,切换到Ubuntu系统终端操作:

  1. 打开系统终端,激活虚拟环境:
source /home/poppap/PycharmProjects/pythonProject/venv/bin/activate
  1. 进入项目目录:
cd whiskyscraper
  1. 启动Scrapy Shell并执行fetch命令:
scrapy shell
fetch('https://kwejk.pl/')

内容的提问来源于stack exchange,提问作者How FunnyTv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:35:29