我在本地测试了我的代码,它运行得很好。然而,把它推到heroku并没有那么顺利。首先,我有这个基本的Root API来检查我的heroku配置是否正常:
class Root(Resource):
def get(self):
return {"works": "fine"}
api.add_resource(Root, "/")
当我访问我的网站时,这确实让我得到了正确的对象。这是我想要的webapp的真正终点:
class Update(Resource):
def get(self, todo_id):
return {todo_id: todos[todo_id]}
def post(self, todo_id):
todos[todo_id] = request.form["data"]
return {"name": "A", "uv": "4000", "pv": todos[todo_id], "amt": "2400"}
def add_data():
global hist_data
while True:
_position = _status()
hist_data += [{"name": "price", "uv": 4000, "pv": _position, "amt": 2400}]
jsonized = json.dumps(hist_data)
post("https://myflaskapi1.herokuapp.com/history", data={"data": jsonized}).json()
sleep(600)
api.add_resource(Update, "/<string:todo_id>")
这就是我循环add_data()发布请求的方式:
if __name__ == "__main__":
p = Process(target=add_data)
p.start()
port = int(os.environ.get("PORT", 5000))
app.run(host="0.0.0.0", port=port, use_reloader=False)
p.join()
现在,本地工作得很好,我能够发布请求然后转到localhost:5000 / history来获取对象。在Heroku上,我得到:{"message": "Internal Server Error"}
我也尝试向Postman发送一个帖子请求,这是我得到的:
{
"message": "The browser (or proxy) sent a request that this server could not understand."
}
上下文:我正在收集数据,以便稍后由React Chart组件呈现。因此,我循环使用add_data()函数每600秒产生更多数据。