lixi5338619 / asyncpy

使用asyncio和aiohttp开发的轻量级异步协程web爬虫框架
110 stars 27 forks source link

RuntimeError: Event loop stopped before Future completed #1

Open haidongsong opened 3 years ago

haidongsong commented 3 years ago

image

from asyncpy.spider import Spider
import sys
sys.path.append('..')
import settings

class BaiduSpider(Spider):
    name = 'baidu'
    settings_attr = settings

    start_urls = ['http://www.baidu.com' for _ in range(1)]

    async def parse(self, response):
        # print(response.status)
        print(response.text)

BaiduSpider.start()

大佬,很喜欢你这个框架,感觉会很有前途,但是有些bug

  1. 直接 import settings,程序无法识别,需要 import sys sys.path.append('..')

  2. 我只是请求了下百度, 但是报错如上图所示

  3. https://www.baidu.com, 无法请求https请求

lixi5338619 commented 3 years ago

你好,很高兴能收到你的邮件。

1、直接 import settings,程序无法识别。

 应该是根目录的问题,这里需要以项目名为根目录

2、 请求了下百度, 但是报错

3、 事件循环在完成之前停止.一般错误原因是因为任务发生阻塞。 但是代码没有问题,可能是asyncio库版本导致的。

无法请求https请求 这个是可以进行请求的,框架请求基于aiohttp

谢谢!

------------------ 原始邮件 ------------------ 发件人: "lixi5338619/asyncpy" @.>; 发送时间: 2021年8月5日(星期四) 晚上9:17 @.>; @.***>; 主题: [lixi5338619/asyncpy] RuntimeError: Event loop stopped before Future completed (#1)

from asyncpy.spider import Spider import sys sys.path.append('..') import settings class BaiduSpider(Spider): name = 'baidu' settings_attr = settings starturls = ['http://www.baidu.com' for in range(1)] async def parse(self, response): # print(response.status) print(response.text) BaiduSpider.start()
大佬,很喜欢你这个框架,感觉会很有前途,但是有些bug

直接 import settings,程序无法识别,需要 import sys sys.path.append('..')

我只是请求了下百度, 但是报错如上图所示

https://www.baidu.com, 无法请求https请求

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

xmydjx commented 2 years ago

我也出现了这样的错误,不知道是模块的问题还是python版本的,通过创建项目命令后的demo一直无法运行

lixi5338619 commented 2 years ago

我也出现了这样的错误,不知道是模块的问题还是python版本的,通过创建项目命令后的demo一直无法运行

非常感谢,麻烦您提供一下环境依赖,我测试一下

xmydjx commented 2 years ago

我也出现了这样的错误,不知道是模块的问题还是python版本的,通过创建项目命令后的demo一直无法运行

非常感谢,麻烦您提供一下环境依赖,我测试一下

python3.7.6 image

lixi5338619 commented 2 years ago

我也出现了这样的错误,不知道是模块的问题还是python版本的,通过创建项目命令后的demo一直无法运行

非常感谢,您提供一下环境依赖,我测试一下

python3.7.6 图片

感谢您的Issues,我用同环境同依赖成功复现了问题,发现异常是在程序结束时发生的,他不影响爬虫的运行。

最后经过定位找到异常产生在spider文件中的最后一行 self.loop.stop() 。

image

将其注释掉可以避免 RuntimeError: Event loop stopped before Future completed.

在3.7中出现这个问题的具体原因我需要再测试一下。

xmydjx commented 2 years ago

我也出现了这样的错误,不知道是模块的问题还是python版本的,通过创建项目命令后的demo一直无法运行

非常感谢,您提供一下环境依赖,我测试一下

python3.7.6图片

感谢您的问题,我用同环境同依赖关系复现了问题,发现异常是在程序结束时发生的,他不影响爬虫的运行。

后来发现定位异常,最后发现在spider文件中的最后一行 self.loop.stop() 。

图片

将其注释掉可以避免 RuntimeError: Event loop 在 Future 完成之前停止。

在3.7中出现这个问题的具体原因我需要再测试一下。 非常感谢你的帮助,期待asyncpy能越来越好