如何在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
相关产品推荐
相关产品推荐

