为什么函数计算调用之后是404?我创建的是一个古文标点的测试函数,这样调用的:curl -X POST -d "婦女終嵗勤勤大半爲此" https://
biaodian-wccehmhlas.cn-hangzhou.fcapp.run
我的函数代码是这样的:
import os
import tempfile
import requests
import torch
from transformers import pipeline
from flask import Flask, request
model_dir = '/usr/src/app/guwen-biaodian'
app = Flask(name)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
pipe = pipeline("token-classification", model=model_dir, device=device)
@app.route('/invoke', methods=['POST'])
def invoke():
request_id = request.headers.get("x-fc-request-id", "")
print("FC Invoke Start RequestId: " + request_id)
text = request.get_data().decode("utf-8")
punctuated_text = pipe(text)
punctuations = [p['entity'] for p in punctuated_text]
punctuation_indices = [p['start'] for p in punctuated_text]
punctuated = "".join(text[i] if i not in punctuation_indices else text[i] + punctuations[punctuation_indices.index(i)] for i in range(len(text)))
print("FC Invoke End RequestId: " + request_id)
return punctuated + "\n"
if name == 'main':
app.run(debug=False, host='0.0.0.0', port=9000)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的信息,您在调用阿里云函数计算时遇到了404错误。结合知识库中的参考资料,404错误通常与以下原因相关:
x-fc-invocation-target
)才能正确触发函数。接下来,我们将针对您的具体情况逐一排查并提供解决方案。
您提供的调用命令如下:
curl -X POST -d "婦女終嵗勤勤大半爲此" https://biaodian-wccehmhlas.cn-hangzhou.fcapp.run
函数代码中定义的路由为:
@app.route('/invoke', methods=['POST'])
def invoke():
...
从上述信息可以看出,您调用的URL路径为根路径/
,而函数代码中定义的路径为/invoke
。这导致了路径不匹配,从而引发404错误。
根据函数代码中定义的路由/invoke
,您需要将调用命令中的URL路径调整为/invoke
。修改后的调用命令如下:
curl -X POST -d "婦女終嵗勤勤大半爲此" https://biaodian-wccehmhlas.cn-hangzhou.fcapp.run/invoke
这样可以确保请求路径与函数代码中的路由定义一致。
如果您希望保持当前的调用路径(即根路径/
),可以修改函数代码中的路由定义,将其改为根路径/
。修改后的代码如下:
@app.route('/', methods=['POST'])
def invoke():
...
修改完成后,重新部署函数即可。
如果您的函数计算环境要求使用特定Header(如x-fc-invocation-target
),可以在调用命令中添加该Header。例如:
curl -X POST -H "x-fc-invocation-target: /invoke" -d "婦女終嵗勤勤大半爲此" https://biaodian-wccehmhlas.cn-hangzhou.fcapp.run
这种方式适用于某些特殊配置的函数计算环境。
如果您使用的是子域名(如https://biaodian-wccehmhlas.cn-hangzhou.fcapp.run
),请确保子域名已正确绑定到函数,并且路径配置无误。如果路径未正确映射,建议参考知识库中的“绑定自定义域名”部分进行配置。
x-fc-invocation-target
),请根据实际情况调整。根据您的描述,最可能的原因是调用路径与函数代码中的路由定义不一致。建议优先尝试方法一(修改调用路径)或方法二(修改函数代码)。如果问题仍未解决,请检查域名配置或添加必要的Header。
希望以上解答能够帮助您解决问题!如有其他疑问,请随时联系。