python - 我们可以在 Scrapy 中使用锁吗?由于 Scrapy 是单线程的,因此它们是否需要?
问题描述
在我的项目管道中添加数据库中的数据,在处理项目期间,与服务器的连接可能会随机断开,我需要重新建立连接。现在在open_connection
函数中,我是否需要确保只有一个线程会创建新连接并且所有并发请求都不会开始创建新连接?
与scrapy
单线程一样,我想在这种情况下我不需要任何锁,因为一个线程将重新建立连接,并且所有下一个传入的process_item
函数回调都将建立一个连接。如果这是错误的,我可以使用所有常用的 Python 锁scrapy
吗?
解决方案
Scrapy 不是单线程的,但你仍然不需要锁。
内部scrapy引擎可以一次向目标服务器发起多个请求,但它维护所有内部线程的顺序/顺序,使其对用户来说似乎是单线程的。
所以是的,您不需要任何锁,因为在任何时候都只允许 1 个线程处理管道。
推荐阅读
- github - 在使用 Github 页面时,有没有比使用 Github api 更好的方法来获取 repo 的文件夹结构?
- python-3.x - 如何从视频中提取高质量的帧并在不压缩的情况下保存它们?
- javascript - React 和 node js 表单图片提交
- google-analytics - 是否可以从 Google Analytics 中选择性地删除数据(特定页面 URL)?
- .net - React SPA + .NET CORE + AuthorizationHandler
- javascript - 如何更改输入文本并在之后存储它?
- xml - ODI-40854:未提供用于同步的文件。使用创建文件
从 命令 - php - 从文本文件中提取某些数据并创建表格
- spring-data - 如何一起使用 spring-data-ldap 和 spring-security-ldap?
- powershell - 如何通过Powershell将文件共享中网站下的普通文件夹转换为应用程序?