首页 > 解决方案 > OpenFaas 在制作 lab4 教程时不断分叉查询并且永不停止

问题描述

我正在关注 OpenFaas 的Lab4。在本实验结束时,您对另一个函数进行了编程调用,但该函数开始循环并且永远不会结束:

在此处输入图像描述

并且执行是给我一个错误:

在此处输入图像描述

这是应该调用的 pod:

在此处输入图像描述

有人可以帮助我吗?

这是我的代码

import os
import requests
import sys

def handle(req):
"""handle a request to the function
Args:
    req (str): request body
"""

#gateway_hostname = os.getenv("gateway_hostname", "127.0.0.1") # uses a default of "gateway" for when "gateway_hostname" is not set

test_sentence = req

print(test_sentence)

r = requests.get("http://127.0.0.1:8080/function/sentimentanalysis", data= test_sentence)

if r.status_code != 200:
    sys.exit("Error with sentimentanalysis, expected: %d, got: %d\n" % (200, r.status_code))

result = r.json()
if result["polarity"] > 0.45:
    return "That was probably positive"
else:
    return "That was neutral or negative"

标签: kubernetesopenfaas

解决方案


tl;博士

r = requests.get("http://gateway.openfaas:8080/function/sentimentanalysis", data= test_sentence)

弗洛里亚诺,

我知道你面临的问题,因为我刚刚经历了它。但是您需要解决您的问题并在那里提及 Kubernetes。

我的意思是,你放在那里的代码在 Docker 中运行得非常好。

但是,我将假设您在这方面遇到了问题,因为您正在 Kubernetes 中进行实验室。

如果我是对的,这个问题的答案很简单:

使用KUBERNETES DNS!

那说

码头工人世界:

r = requests.get("http://" + os.getenv("gateway_hostname", "127.0.0.1") + ":8080/function/sentimentanalysis", data= test_sentence)

Kubernetes 世界

r = requests.get("http://pod.namespace:8080/function/sentimentanalysis", data= test_sentence)

我的情况是,我安装了 openfaas 几乎默认的 helm 图表,因此,命名空间是openfaas并且网关服务只是gateway

r = requests.get("http://gateway.openfaas:8080/function/sentimentanalysis", data= test_sentence)

推荐阅读