Google 应用引擎:获取大量网址和数据处理

Google app engine: fetching a lot of urls and data processing

在我的应用程序中,我获取了大量的 url 并解析信息。 我正在尝试使用延迟库和任务队列。 我通过以下处理将每个页面的提取分成单独的任务。 以下是延迟任务的示例:

def deftask(somevalue, pagenumber):
    fetch url
    parse with beautiful soup
    some processing
    saving to datastore

之后在 post 处理程序中我 运行 这个任务在循环中:

for i in range(0, 200):
     deferred.defer(deftask, somevalue, i)

所以仅仅 200 次迭代大约需要 5-8 分钟。好长啊

与任务队列相同的性能。我也在循环中发送任务:

taskqueue.add(url='/taskhandler', params = {'page' : i}, transactional=True)

只有一个队列。

所以我的问题是如何提高性能?

我应该改变我的方法吗?或者可能是护目镜应用引擎不适合这个目标?我应该将我的项目移动到 VPS 使用 django 等托管?

您可以在 queue.yaml 中控制执行时间,例如将速率设置为 10/s。请确保您的模块配置设置为自动缩放,或使用适当的手动缩放。

queue:
- name: default
  rate: 5/s

还要查看您的日志并查找失败的任务,这可能是它们需要这么长时间才能完成的原因。

对每个使用单独的任务:

fetch url
parse with beautiful soup
some processing
saving to datastore

因此,如果 parse with beautiful soup 失败,它不会再次获取此 url,但会从数据存储中获取此内容。