我创建了我的第一个Flask应用程序-一个非常基本的API,用于从本地数据库中获取数据并返回JSON数据。该API在本地端口上运行。然后,我尝试将其托管在Heroku上,并且也很成功-它说Build Succeeded。
但是,当我尝试运行该应用程序时,它会引发此应用程序错误。当我查看heroku logs --tail
时,它显示此错误:ModuleNotFoundError: No module named 'deploy'
。
Here是应用程序。
这是我的API代码:
from flask import Flask, request
from flask_restful import Resource, Api
from sqlalchemy import create_engine
from json import dumps
from flask_jsonpify import jsonify
db_connect = create_engine('sqlite:///arsenal.db')
app = Flask(__name__)
api = Api(app)
class Players(Resource):
def get(self):
player_dict = dict()
conn = db_connect.connect() # connect to database
query = conn.execute("SELECT * FROM Players")
players = [i for i in query.cursor.fetchall()]
for player in players:
player_dict.update({player[1]:player[2]})
return {'players': player_dict}
api.add_resource(Players, '/players') # Route_1
if __name__ == '__main__':
app.run(port='5200')
我在做什么错?如果相关,我关注了此博客here和this YouTube视频。
编辑1 :文件夹中的文件为-上面server.py
,requirements.txt
,Procfile
,runtime.txt
和{{ 1}}-在此代码中连接到的数据库。储存库为here
编辑2 :我尝试按照@Stanley的建议卸载并安装Flask,但不幸的是,问题仍然存在。
编辑3 :arsenal.db
包含Procfile
答案 0 :(得分:0)
Procfile
包含web: gunicorn deploy: app
此文件的格式非常重要。如果web:
之前确实有空格,请将其删除。
参数传递给gunicorn
tell it what module and variable it should us as the WSGI entry point。在您的情况下,模块为server
(文件名),可调用的WSGI为api
。
总而言之,您的Procfile
应该包含:
web: gunicorn server:api
请注意,server
和api
之间没有空格。