【问题标题】:Options for deploying Flask app that continuously web scrapes用于部署持续 Web 抓取的 Flask 应用程序的选项
【发布时间】:2020-12-24 18:30:24
【问题描述】:

我编写了一个跟踪亚马逊价格的 Flask 网络应用程序。以下是其作用的概要:

  • 用户注册并登录到应用程序
  • 他们输入了他们想要在亚马逊上跟踪的产品的 URL 以及他们的预算和电子邮件
  • 应用程序将抓取 URL 并检索当前价格。然后它将它与预算进行比较并执行一些操作

我遇到的问题是,例如,当我在 Heroku 上部署应用程序时,我希望应用程序每天对产品运行网络抓取和价格检查,以便它可以注意到价格的任何变化。

有人知道怎么做吗?我需要编写一个单独的 python 脚本吗?我需要什么样的 Web 服务?我希望他们不花任何钱

【问题讨论】:

  • 网页的工作方式与桌面程序不同 - 客户端发送请求(使用 URL),服务器运行代码(通常需要 30 秒 - 阻止 DDOS)并向客户端发送响应(通常是 HTML)。如果您必须运行长时间运行的代码,那么您可能必须在单独的线程中运行它或发送到可以运行超过 30 秒的外部程序 - 即。 Celery。之后,客户端浏览器中的页面可以使用 JavaScript/AJAX 每隔几秒询问服务器是否有结果。如果您想每天运行相同的抓取,则可以使用cron/crontab

标签: python flask heroku web-scraping web-applications


【解决方案1】:

您是否尝试过使用 Cron?没有成本,也不需要安装:它在类 Unix 操作系统上运行,并在虚拟环境中运行以运行基于时间的作业。所以你可以设置一个 cronjob 每隔一小时左右运行一个 python 脚本;在您的情况下,该脚本将是在亚马逊网站上搜索价格的脚本。

在此处了解 Cron:https://en.wikipedia.org/wiki/Cron

这是一个有用的教程,由 Flask 大师 Miguel Grinberg 编写:Run your Flask Regularly Scheduled Jobs with Cron

您还可以有一个始终运行的 python 脚本,并且只有在经过一定时间后才进行网络爬虫,但这会 (a) 使用更多的 CPU——如果它是一个随用随付的虚拟机,那就不好了——并且 (b)对您的应用有性能影响。

【讨论】:

  • 谢谢我以前不知道cron。我现在还找到了 heroku 调度程序并创建了一个 python 脚本,所以我会尝试两者
猜你喜欢
  • 2011-07-01
  • 1970-01-01
  • 2012-11-27
  • 2012-06-07
  • 2019-07-02
  • 2020-04-17
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多