2017-09-13 41 views
0

我使用Heroku来托管我的电报机器人。 机器人的目的是从网页中检索html并将其转换为pdf。从Heroku上的URL检索HTML

成功托管它后,我试图发送一个URL到机器人,但它冻结/停止在发送获取请求的时刻。

代码:

logger.info('retrieving HTML = {}'.format(url)) 
page_html = requests.get(url) 

logger.info('retrieved HTML') 
logger.info('started HTML parsing') 
soup = BeautifulSoup(page_html.text, 'html.parser') 

在Heroku的日志,我只看到retrieving HTML = <URL>,比应用程序不显示活动的任何迹象。

我试图连接到使用Heroku的控制台(从Heroku的网页访问)测功机(在Heroku上的应用程序本身),并输入以下代码:

import requests 
# url of a recepie 
url = 'https://pikabu.ru/story/pirog_quotlen__matushkaquot_5332461' 
html = requests.get(url) 

这个代码在执行heroku控制台也需要很长时间,并且没有完成(没有错误,没有消息,我可以用crtl + c停止进程,执行永远不会结束),并且我不确定可能是什么问题。

先谢谢您,任何提示或帮助,将不胜感激。

+0

您是否可以加载此页:https://pikabu.ru/story/pirog_quotlen__matushkaquot_5332461 – bhansa

+0

@bhansa是的,我可以打开它。只需在开头添加“https://” – GrimSmiler

回答

0

如果没有看到日志中的信息,或者无法了解您想要扫描的页面的大小,我的猜测是您正在触发Heroku的30秒超时。

the Dev Center article on timeouts

请求必须然后在测功机由你的应用程序,并 回送到路由器,在30秒内,以 避免超时的响应进行处理。

我会在运行脚本时检查日志(heroku logs -t -a yourAppName)并查找h12这是超时错误代码。或者,如果您使用业余爱好或以上的动态,您可以在仪表板上查看application metrics