【问题标题】:Limit speed of urlfetch per domain限制每个域的 urlfetch 速度
【发布时间】:2015-06-10 06:48:09
【问题描述】:

有没有办法限制每个时间单位 urlfetch 向任何单个服务器发出的请求数?

我不小心对我正在抓取的网站进行了 DoS,因为异步 urlfetch api 使它分支直到它死亡(每个请求平均产生一个以上的新请求)。日志包含 ~200 个DeadlineExceeded,每个之间有一毫秒。

【问题讨论】:

  • 在我看来,这将由您围绕调用 urlfetch 编写的代码控制。 AFAIK 没有这样的方法。
  • 每次抓取只使用任务队列来限制速率

标签: python google-app-engine urlfetch


【解决方案1】:

您可以使用time.sleep() 方法。在给定的秒数内暂停当前线程的执行。

import time
[...]
for u in urls:
    urllib2.urlopen(u, timeout=4)
    time.sleep(1)

https://docs.python.org/2/library/time.html#time.sleep

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多