gpt4 book ai didi

python - Scrapy:蜘蛛中间件中的异步数据库请求?

转载 作者:太空宇宙 更新时间:2023-11-03 15:24:21 26 4
gpt4 key购买 nike

序言:

我有一个蜘蛛将其结果存储在数据库中。然后,为了节省一些时间和远程 Web 服务器资源,我决定不请求数据库中已有的项目。阅读文档后,我决定自定义蜘蛛中间件是我的最佳选择。

class SkipDupeMiddleware(object):
process_spider_output(response, result, spider):
for r in result:
if isinstance(r, Request) and item_in_database(r.url):
log.msg('Skip %s' % r.url)
else:
yield r

item_in_database 查询数据库。

它也很好用,节省了很多时间。

现在是真正的问题:

后来我读到在非阻塞应用程序中使用阻塞数据库请求不是一个好主意。我总是“做正确的事”,并决定将我所有的数据库请求包装在 adbapi

我找到了在管道 中使用adbapi 的方法,但是是否可以在中间件级别执行此操作?中间件应返回 BaseItemRequestNone,但 adbapi 返回 twistedDeferred,稍后返回 RequestNone

现在我卡住了。

最佳答案

您可以(并且应该)从管道 process_item() 方法返回一个 Deferred。

关于python - Scrapy:蜘蛛中间件中的异步数据库请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com