我的应用程序在本地主机上运行正常,但是在将我的flask应用程序部署到heroku时出现以下错误
2020-07-01T09:56:02.982007+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=webscrappingapp.herokuapp.com request_id=59cec0a7-98a3-49d8-b980-779cada2c0d9 fwd="103.40.197.230" dyno= connect= service= status=503 bytes= protocol=https
2020-07-01T09:56:03.765421+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=webscrappingapp.herokuapp.com request_id=b2ddd2b8-5930-4049-993d-3c8e972b10ee fwd="103.40.197.230" dyno= connect= service= status=503 bytes= protocol=https
烧瓶文件, webscrap.py-
from flask import Flask, render_template
import requests
from bs4 import BeautifulSoup
from datetime import datetime
from pytz import timezone
#__name__ == __main__
app = Flask(__name__)
URL = 'https://techcrunch.com/'
page = requests.get(URL) # type of page -- request
# type coverted to BeautifulSoup
# second argument how you want to structure your data
soup = BeautifulSoup(page.content, 'html.parser')
results = soup.find(class_='river river--homepage')
post_elems = results.select('.post-block')
table = [['Sr No', 'Time Stamp', 'News Title', 'Image Source URL', 'Author']]
i = 1
for post_elem in post_elems:
header_elem = post_elem.find('header', class_='post-block__header')
title_elem = header_elem.find('a', class_='post-block__title__link')
timeStamp_elem = header_elem.find('time')['datetime']
author_elem = header_elem.find('span')
image_elem = post_elem.find('img')
date = datetime.strptime(timeStamp_elem, "%Y-%m-%dT%H:%M:%S%z" )
row = [i, date.astimezone(timezone('Asia/Kolkata')).strftime("%I:%M %p" + " IST " + "%B %d, %Y"), title_elem.text.strip(),
image_elem.get('src'), author_elem.text.strip()]
table.append(row)
i = i + 1
@app.route('/')
def index():
return render_template("index.html", table=table)
if __name__ == '__main__':
app.run(debug=True)
Procfile:
web : gunicorn webscrap:app
Requirements.txt:
autopep8==1.5.3
beautifulsoup4==4.9.1
certifi==2020.6.20
chardet==3.0.4
click==7.1.1
Flask==1.1.2
gunicorn==20.0.4
idna==2.10
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
pycodestyle==2.6.0
pytz==2020.1
requests==2.24.0
soupsieve==2.0.1
toml==0.10.1
urllib3==1.25.9
Werkzeug==1.0.1
我尝试将Procfile内容替换为
web : gunicorn --bind 0.0.0.0:$PORT webscrap:app
但这对我没有用。我还尝试将app
替换为server
,但是没有用。因此,请提出解决该问题的方法。
编辑: 我的错误是Procfile中的空格。正确的是-
web: gunicorn webscrap:app
但是现在我遇到H14错误,还尝试在Procfile中添加heroku ps:scale web=1
,但对我没有用。
答案 0 :(得分:0)
将Procfile txt更改为
web: uwsgi uwsgi.ini
创建新文件uwsgi.ini并添加此代码
[uwsgi]
http-socket = :$(PORT)
master = true
die-on-term = true
module = app:app
memory-report = true
在require.txt中添加uwsgi
...
urllib3==1.25.9
Werkzeug==1.0.1
uwsgi
添加runtime.txt并添加此文本
python-version
例如python-3.7.4
答案 1 :(得分:0)
我的项目结构
创建 Procfile - 在其中写入以下行
web: gunicorn main:app
其中“main”是提及app = create_app()的文件名
pip install gunicorn
pip freeze > requirements.txt
再创建一个名为 runtime.txt
的文件,其中包含以下行
python-3.9.2
(提供您项目的相应python版本)
Heroku 部分:使用 gitbash 或 vscode 控制台一一运行以下命令
heroku login
git init
git add .
git commit -am "Initial Commit"
git push heroku main