在我的应用程序中,我获取大量的url和解析信息。 我正在尝试使用延迟库和任务队列。 我将每个页面的获取拆分为单独的任务,并进行以下处理。 以下是延迟任务的示例:
def deftask(somevalue, pagenumber):
fetch url
parse with beautiful soup
some processing
saving to datastore
之后,在post handler中,我在循环中运行以下任务:
for i in range(0, 200):
deferred.defer(deftask, somevalue, i)
所以仅仅200次迭代就需要5-8分钟。那是很长的一段时间。你知道吗
任务队列的性能相同。我也在循环中发送任务:
taskqueue.add(url='/taskhandler', params = {'page' : i}, transactional=True)
只有一个队列。你知道吗
所以我的问题是如何提高绩效?你知道吗
我应该改变我的方法吗?或者可能是goggle应用程序引擎不适合这个目的?我应该把我的项目转移到与django等VPS托管。?你知道吗
您可以在中控制执行时间队列.yaml,例如,将速率设置为10/s。确保您的模块配置设置为自动缩放,或使用适当的手动缩放。你知道吗
还要查看日志并查找失败的任务,这可能是它们需要这么多时间才能完成的原因。你知道吗
对每个任务使用单独的任务:
因此,如果
parse with beautiful soup
失败,它将不再获取此url,而是从数据存储中获取此内容。你知道吗相关问题 更多 >
编程相关推荐