Python 并发请求和下载延迟不起作用

Python 并发请求和下载延迟不起作用,python,url,concurrency,scrapy,delay,Python,Url,Concurrency,Scrapy,Delay,这是我的代码片段 import scrapy class QuotesSpider(scrapy.Spider): name = 'quotes' custom_settings = { 'CONCURRENT_REQUESTS': 25, 'CONCURRENT_REQUESTS_PER_DOMAIN': 100, 'DOWNLOAD_DELAY': 0 } f = open("list.txt") st

这是我的代码片段

import scrapy
class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    custom_settings = {
        'CONCURRENT_REQUESTS': 25,
        'CONCURRENT_REQUESTS_PER_DOMAIN': 100,
        'DOWNLOAD_DELAY': 0
    }

    f = open("list.txt")
    start_urls = [url.strip() for url in f.readlines()]
    f.close()

    def parse(self, response):
        for quote in response.xpath("//div[@class='border block']"):
            urlgem = quote.xpath(".//div[@class='col-md-4 pull-right']/a/@href").extract()
            if urlgem:
                yield {
                    'text': urlgem,
                }
使用终端,我使用命令执行上述代码

scrapy runspider quotes_spider.py -o quotes.json
python3 quotes.py
list.txt包含50个相同域的URL,用行分隔

根据我的理解,代码应该为25个URL(从一个50个URL的列表)向域发送25个请求,并且应该在2-3秒内完成,并生成文件名quotes.json

文件quotes.json中的输出结果与预期一致,但SCRAPY并没有同时执行任务,而是一个接一个地获取URL,大约需要55-60秒才能完成

我使用BeautifulSoup编写的另一段代码执行与上面相同的任务

from multiprocessing import Pool
import requests
from bs4 import BeautifulSoup

base_url = 'https://SOMEWEBSITE.com/search_by='
all_urls = list()

def generate_urls():
    for i in range(480882, 480983):
        all_urls.append(base_url + str(i))

def scrape(url):
    res = requests.get(url)
    soup = BeautifulSoup(res.text, 'lxml')
    pageText = soup.find_all('div', {'class': 'border block'})

    for bidBox in pageText:
        bidNumber = bidBox.find('p', {'class': 'bid_no pull-left'})
        print(bidNumber.text)
        bidStatus = bidBox.find('span', {'class': 'text-success'})
        print(bidStatus.text)

generate_urls()

p = Pool(50)
p.map(scrape, all_urls)
p.terminate()
p.join()
上述代码在终端中使用命令执行

scrapy runspider quotes_spider.py -o quotes.json
python3 quotes.py
以上也产生了同样的结果。输出如预期,但执行时间约为每秒1个URL


请帮忙

有什么积极的回应吗?我有一些想法。但是我需要更多的信息。特别是粗糙的原木输出。特别注意:从您输入console scrapy命令到第一个日志行ouptut的时间。从日志消息
Spider打开
Spider关闭
的时间。和日志统计(结束日志行)。