小编Ask*_*kew的帖子

在使用 Channels 实现 WebSockets 后,Scrapy 蜘蛛无法在 Django 上工作(无法从异步上下文中调用它)

我正在提出一个新问题,因为我在 Django 应用程序中遇到了 Scrapy 和 Channels 的问题,如果有人能够指导我正确的方向,我将不胜感激。

我使用通道的原因是因为我想从 Scrapyd API 实时检索抓取状态,而不必一直使用 setIntervals,因为这应该成为一个 SaaS 服务,可能会被许多人使用用户。

如果我运行的话,我已经正确实现了通道:

python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

我可以正确地看到系统现在正在使用 ASGI:

System check identified no issues (0 silenced).
September 01, 2020 - 15:12:33
Django version 3.0.7, using settings 'seotoolkit.settings'
Starting ASGI/Channels version 2.4.0 development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Run Code Online (Sandbox Code Playgroud)

此外,客户端和服务器通过 WebSocket 正确连接:

WebSocket HANDSHAKING /crawler/22/ [127.0.0.1:50264]
connected {'type': 'websocket.connect'}
WebSocket CONNECT /crawler/22/ [127.0.0.1:50264]
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,当我通过 Scrapyd-API 运行 scrapy 时出现问题

2020-09-01 15:31:25 [scrapy.core.scraper] ERROR: Error processing {'url': 'https://www.example.com'}
raceback (most …
Run Code Online (Sandbox Code Playgroud)

django websocket scrapy scrapyd django-channels

5
推荐指数
1
解决办法
488
查看次数

标签 统计

django ×1

django-channels ×1

scrapy ×1

scrapyd ×1

websocket ×1