Внутренняя ошибка сервера при попытке создать api с использованием функции, которая принимает * args в качестве параметров в Flask - PullRequest
0 голосов
/ 05 августа 2020

У меня есть функция, которая возвращает мне вектор.

def class_vector(*categories):
    all_categories = categories
    model = Word2Vec.load(r"C:\Users\vector.model")
    my_dict = dict({})
    for idx, key in enumerate(model.wv.vocab):
        my_dict[key] = model.wv[key]
                   
    categories_vectors = dict({})
        
    for i in all_categories:
        if i.lower() in my_dict.keys():
            categories_vectors[i] = my_dict[i]
                  
    average_vector = np.mean(list(categories_vectors.values()), axis =0)
    average_vector =  average_vector.reshape(1, -1)

    return average_vector

Теперь я вызываю эту функцию:

vector_generator_object = class_vector("apple", "banana")

Она отлично работает и возвращает мне вектор для фруктов. Вышеупомянутая функция находится в файле .py с именем vectors_list.py

Теперь я хочу создать api, который принимает имена фруктов в качестве входных данных от пользователя и использует функцию class_vector для возврата вычисленных векторов.

Код API:

from flask import Flask, request
from vector_list import class_vector

app = Flask(__name__)

@app.route('/')
def status():
    fruits = request.args.getlist("param")
    str_fruits = ",".join(fruits)
    returned_vec = class_vector(*str_fruits )
    return returned_vec

Теперь я делаю flask run из cmd & curl "http://localhost:5000?param=apple&param=banana". Это возвращает мне 500 Internal Server Error. Есть идеи, как исправить это

1 Ответ

0 голосов
/ 05 августа 2020

Ваш код flask выглядит нормально. Думаю, проблема в вашем class_vector. Будет полезно, если вы можете добавить traceback для того же.

...