避免网络抓取应用程序超时的简易方法?Heroku Flask应用程序



我正在开发一个 Flask 应用程序,我正在从多个 URL 进行网络抓取(范围很广,可以超过 100 个(。它在本地工作,但当部署到 Heroku 时,它会超时。

这是我正在使用的代码片段,其中bookOutletHas((函数是使用请求和BeautifulSoup进行网络抓取的函数。

for book in gr_books:
temp_book = book.book
title = temp_book["title"]
author = temp_book["authors"]["author"]["name"]
arr = bookOutletHas(title=title, author=author)
if arr[0]:
valid_books += [ str(arr[1]) ]
return render_template("main_page.html",books=valid_books)

我的第一直觉是找到一种方法来编码它,以便每次更新valid_books数组时它都会更新页面(就像每次再次渲染模板一样?(,但我不确定如何处理这个问题。我对javascript一无所知,所以,如果可能的话,我正在寻求通过Python和HTML的方法。

您可以将环境配置为允许请求处理花费更长的时间。请参阅如何在 python flask 中设置 http 请求超时,以了解这方面的概要。

但是,这比您应该在请求线程中执行的工作要多得多。更好的方法是在后台定期执行抓取并缓存结果,然后在处理请求时从缓存中读取。