从Heroku上的URL检索HTML

时间:2017-09-13 13:41:12

标签: python heroku https python-requests

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

在线成功托管之后,我尝试向机器人发送一个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网页访问)连接到dyno(应用程序本身在heroku上),并输入以下代码:

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

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

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

1 个答案:

答案 0 :(得分:0)

如果没有从您的日志中看到信息,或者想要了解您要抓取的页面有多大,我的猜测就是您正在使用Heroku的30秒超时。

来自the Dev Center article on timeouts

  

然后您的申请必须在dyno中处理请求,   并在30秒内将响应传送回路由器   避免超时。

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