You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Heroku上部署运行多个Python文件?

部署Flask应用+定时爬虫到Heroku的实操步骤

1. 补充必要配置文件

requirements.txt

列出所有依赖包,确保Heroku能安装运行环境:

flask
beautifulsoup4
requests
apscheduler
gunicorn

Procfile

告诉Heroku如何启动两个进程(Web服务和爬虫):

web: gunicorn webapp:app
worker: python scrapper.py

注:Heroku免费额度支持同时运行1个web进程和1个worker进程

2. 调整代码适配Heroku环境

修改scrapper.py的定时逻辑

替换原有的循环休眠,用APScheduler实现更可靠的定时任务:

from apscheduler.schedulers.blocking import BlockingScheduler
import requests
from bs4 import BeautifulSoup

def scrape_stock():
    # 这里写你的爬虫逻辑示例
    url = "目标库存页面URL"
    resp = requests.get(url)
    soup = BeautifulSoup(resp.text, "html.parser")
    stock_info = soup.select_one("对应页面选择器").text.strip()
    with open("stock.txt", "w") as f:
        f.write(stock_info)

if __name__ == "__main__":
    scheduler = BlockingScheduler()
    # 每5分钟执行一次爬取
    scheduler.add_job(scrape_stock, "interval", minutes=5)
    # 启动时先执行一次,避免初始无数据
    scrape_stock()
    scheduler.start()

修改webapp.py的异常处理

适配Heroku临时文件系统,处理文件未生成的情况:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def display_stock():
    try:
        with open("stock.txt", "r") as f:
            stock = f.read().strip()
        return f"当前库存:{stock}"
    except FileNotFoundError:
        return "库存数据加载中,请稍后刷新"

if __name__ == "__main__":
    app.run(debug=True)

3. 执行部署操作

  • 初始化Git仓库(未初始化的话):
git init
git add .
git commit -m "Initial deployment files"
  • 登录Heroku CLI:
heroku login
  • 创建Heroku应用:
heroku create 你的应用自定义名称
  • 推送代码到Heroku:
git push heroku main
  • 启动爬虫worker进程:
heroku ps:scale worker=1

4. 验证部署状态

  • 访问应用URL:https://你的应用名称.herokuapp.com,查看库存展示是否正常
  • 查看实时日志确认爬虫运行:
heroku logs --tail

注意:Heroku免费Web dyno会在30分钟无访问时休眠,但worker进程会持续运行;若需要Web服务保持唤醒,可借助定时ping工具(如UptimeRobot)定期访问应用。

内容的提问来源于stack exchange,提问作者laxmymow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 18:15:38