我有一个网页,可以进行网页抓取并以幻灯片方式显示新闻。它还使用tweepy从Twitter中提取推文。
代码序列如下:
class extract_news:
def bcnews(self):
//code to extract news
def func2(self):
//code to extract news
...
...
def extractfromtwitter(self):
//code to extract using tweepy
我有多个这样的功能,可以使用BS4从不同的网站中提取并显示新闻和推文。我正在使用Flask运行此代码。
但该页面大约需要20秒才能加载。如果有人试图远程访问它,它需要太长时间,浏览器会出现错误“连接超时”或者只是没有加载。
如何让此页面加载速度更快?比如说> 5秒钟。
谢谢!
答案 0 :(得分:1)
您需要确定代码中的瓶颈,然后找出如何减少它们。使用您提供的最少量代码很难帮助您,但最可能的原因是每个HTTP请求占用大部分时间,并且相比之下解析可能可以忽略不计。
看看你是否能找到一种方法来平行HTTP请求,例如:使用multiprocessing
或threading
模块。
答案 1 :(得分:0)
我同意其他人的意见。为了给出具体的答案/解决方案,我们需要查看代码。 但简而言之,您需要做的是使用DevTools对应用程序进行分析。这将导致您将同步javascript代码推送到CSS,标记和ASCII加载之下。
还创建一个例程来加载一小块内容(大约一页或一张幻灯片),以便用户可以查看。其余的可以在后台加载,他们永远不会知道差异。在他们能够点击滚动到下一张幻灯片之前几乎肯定可以使用它。即使它需要10秒钟左右。
感知性能就是我在这里所描述的。是的,我同意,您将并且应该找到改善整体负载的方法。然而,更重要的是提高“感知性能”。通过加载一些初始内容完成(如我所说)。然后立即在其余部分流式传输。