큐 스레드 수와 요청 지연 지연 언어 크롤러 프레임 워크 콜리
Go Crawler 프레임 워크를 Colly를 사용할 때 효율적인 동시 요청 처리가 중요합니다. 이 기사는 스레드 카운트 설정 설정을 파고 Colly의 queue
의 지연이 동시 처리에 영향을 미치고 일반적인 질문에 대답합니다.
문제 : 스레드 수와 요청 지연 사이의 상호 작용
queue
의 스레드 수를 2로 설정했다고 가정합니다.
q, _ : = queue.new (2, 스토리지)
3 개의 요청을 추가했습니다. 한편 colly.Limit()
각 요청의 지연을 5 초로 설정하는 데 사용됩니다. 두 개의 요청이 거의 동시에 발행되고 5 초 후에 응답 할 것으로 예상되며, 세 번째 요청은 5 초로 지연됩니다. 그러나 실제 결과는 다음과 같습니다.
- 두 가지 요청이 생성됩니다.
- 5 초 후에 첫 번째 요청이 응답하고 세 번째 요청이 생성됩니다.
- 5 초 후 두 번째 요청이 응답합니다.
- 5 초 후에 세 번째 요청이 응답합니다.
이것은 병렬로 처리되지 않습니다. queue
의 스레드 수가 실패하는 이유는 무엇입니까? colly.Limit()
가 queue
의 동시성에 영향을 미칩니 까? onrequest
콜백 함수는 실제로 요청을하지 않고 요청을 작성합니까?
분석 : 스레드 수와 요청 지연 사이의 독립성
Colly의 queue
동시 요청 수를 관리하고 colly.Limit()
는 각 요청에 대한 지연을 설정합니다. 둘은 독립적 인 메커니즘입니다.
queue
의 스레드 수는 동시에 처리 된 요청 수를 제한합니다. colly.Limit()
각 요청이 발행되기 전에 지연을 적용합니다.
위의 경우 :
-
queue
두 개의 요청을 생성하지만colly.Limit()
둘 다 5 초 동안 기다립니다. - 첫 번째 요청은 지연이 끝난 후 발행됩니다. 응답 후
queue
스레드를 출시하고 세 번째 요청을 만듭니다. - 두 번째 요청은 5 초 동안 기다린 후에도 보내지고 응답합니다.
- 세 번째 요청은 5 초 동안 기다린 후에도 보내지고 응답합니다.
따라서 요청 지연은 queue
의 동시성을 마스킹합니다.
onrequest
콜백 및 요청 발급 시간
요청이 실제로 발행 될 때가 아니라 요청이 queue
에 추가되면 onrequest
콜백 함수가 해고됩니다. 요청이 발행되기 전에 일부 전처리 작업을 수행하는 데 사용됩니다.
결론 : 스레드 수를 조정하고 지연을 요청하십시오
colly.Limit()
의 지연은 queue
스레드 수의 동시성 효과에 영향을 미칩니다. 진정한 동시성을 달성하려면 스레드 수를 신중하게 조정하고 요청 지연 설정이 필요합니다. 높은 동시성이 필요한 경우 colly.Limit()
에 의해 설정된 지연을 최소화하거나 제거하거나 더 미세한 동시성 제어 메커니즘을 고려해야합니다. 크롤링 속도를 제어 해야하는 경우 colly.Limit()
에 의존하는 대신 더 미세한 세분화 제어 방법을 사용하는 것이 좋습니다.
위 내용은 Go Crawler 프레임 워크에서 큐의 스레드 수 설정과 요청 지연이 요청의 동시 처리에 어떤 영향을 미칩니 까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。

go语言叫go的原因:想表达这门语言的运行速度、开发速度、学习速度(develop)都像gopher一样快。gopher是一种生活在加拿大的小动物,go的吉祥物就是这个小动物,它的中文名叫做囊地鼠,它们最大的特点就是挖洞速度特别快,当然可能不止是挖洞啦。

是,TiDB采用go语言编写。TiDB是一个分布式NewSQL数据库;它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性。TiDB架构中的PD储存了集群的元信息,如key在哪个TiKV节点;PD还负责集群的负载均衡以及数据分片等。PD通过内嵌etcd来支持数据分布和容错;PD采用go语言编写。

go语言需要编译。Go语言是编译型的静态语言,是一门需要编译才能运行的编程语言,也就说Go语言程序在运行之前需要通过编译器生成二进制机器码(二进制的可执行文件),随后二进制文件才能在目标机器上运行。

go语言能编译。Go语言是编译型的静态语言,是一门需要编译才能运行的编程语言。对Go语言程序进行编译的命令有两种:1、“go build”命令,可以将Go语言程序代码编译成二进制的可执行文件,但该二进制文件需要手动运行;2、“go run”命令,会在编译后直接运行Go语言程序,编译过程中会产生一个临时文件,但不会生成可执行文件。

删除map元素的两种方法:1、使用delete()函数从map中删除指定键值对,语法“delete(map, 键名)”;2、重新创建一个新的map对象,可以清空map中的所有元素,语法“var mapname map[keytype]valuetype”。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
