我正在尝试通过sagemaker托管自定义docker容器。 我使用nginx,gunicorn,烧瓶设置。 我能够为我的应用程序调用(ping)端点。 输入到我的服务是'application / json'格式,服务的预期输出是json。
当我调用该服务时,我在客户端获得以下输出:
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2Final//EN">\n<title>Redirecting...</title>\n<h1>Redirecting...</h1>\n<p>You should be redirected automatically to target URL: <a href="http://boaucpph.aws.local:8080/invocations/">http://boaucpph.aws.local:8080/invocations/</a>. If not click the link.'
和我的端点日志告诉:
10.32.0.2 - - [28/Mar/2018:20:50:41 +0000] "POST /invocations HTTP/1.1" 301 293 "-" "AHC/2.0"
我的nginx.conf
worker_processes 1;
daemon off; # Prevent forking
pid /tmp/nginx.pid;
error_log /var/log/nginx/error.log;
events {
# defaults
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log combined;
upstream gunicorn {
server unix:/tmp/gunicorn.sock;
}
server {
listen 8080 deferred;
client_max_body_size 100M;
keepalive_timeout 5;
location ~ ^/(ping|invocations) {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://gunicorn;
}
location / {
return 404 "{}";
}
}
}
有没有人遇到过类似的问题?对此提出任何建议都会有很大帮助。
答案 0 :(得分:0)
好吧我明白了。 问题出在我的烧瓶文件中。
最初我的烧瓶文件中的端点是这样的。
void method1(int m, int n)
int p = m / n;
if (n != 0) {
System.out.println("Print some value");
}
if (n == 0) {
System.out.println("Infinity");
}
return p;
必须将其更改为
@app.route('/invocations/', methods=['POST'])
因为在nginx文件服务器中会向
发送请求@app.route('/invocations', methods=['POST'])
即。
location ~ ^/(ping|invocations) {
由于有一个额外的/ in烧瓶应用程序,它没有收到请求。