我正在尝试在Heroku上托管一个用Rust编写的简单HTTP服务器。
我没有使用外部HTTP库,因为这是大学的学习项目,所以我通过TcpStream
来管理所有内容。
服务器在本地按预期工作。
我一直看到Heroku日志中的H18(服务器请求中断)错误,而Heroku上正在运行的实例不提供任何文件。具体而言,会出现以下类型的错误:
2017-03-12T14:11:53.952084+00:00 heroku[router]: sock=backend at=error code=H18 desc="Server Request Interrupted" method=GET path="/" host=regans-rust-project.herokuapp.com request_id=fe50b113-8091-4129-99f5-632c9536bb8e fwd="154.126.208.8" dyno=web.1 connect=0ms service=2ms status=503 bytes=581 protocol=https
2017-03-12T14:11:54.459277+00:00 heroku[router]: sock=backend at=error code=H18 desc="Server Request Interrupted" method=GET path="/favicon.ico" host=regans-rust-project.herokuapp.com request_id=cf6ad8a0-2780-4c07-843a-2b533df1c9aa fwd="154.126.208.8" dyno=web.1 connect=0ms service=1ms status=503 bytes=388 protocol=https
您可以看到我的代码here。
我使用以下buildpack
我还有什么要追加到我对#34;完成"他们?任何帮助将不胜感激:)
答案 0 :(得分:1)
正如评论中所讨论的那样,问题是代码使用\n
作为HTTP响应中的分隔符,而标准说它应该是\r\n
答案 1 :(得分:0)
我还遇到了测试POST调用以在Flask服务器上处理图像文件时遇到的错误。 我在返回响应之前添加了一个简单的延迟
time.sleep(3)
成功了! 我相信Heroku(免费订阅)需要一些时间来从基础结构角度处理POST请求,因此如果您立即返回,则会引发网络错误
之前
@app.route("/process_image", methods=['POST'])
def process_image():
print ("received ")
return json.dumps({'success': True}), 200, {'ContentType': 'application/json'}
以后
@app.route("/process_image", methods=['POST'])
def process_image():
print ("received ")
time.sleep(3)
return json.dumps({'success': True}), 200, {'ContentType': 'application/json'}