如何修复不断在heroku上超时的机器学习烧瓶应用程序?

时间:2019-06-18 13:55:43

标签: python heroku flask

我有一个flask应用程序,应该对用户输入进行预测,在接受输入后,它将使用预加载的字符级lstm模型来生成1000个字符。我要做的是迭代1000次,并使用预加载的模型预测每个输入,然后将预测映射到字符串中。

问题是此过程耗时超过30秒,因此heroku给我超时错误,有什么办法解决吗?我已经阅读了有关后台进程的信息,但是在做出预测之前该页面无法前进,因此我不确定该怎么做。我将在下面提供做出预测的代码

    pattern = []
    for char in input_words:
        try:
            pattern.append(self.char_to_int[char])
        except:
            pattern.append(0)
    output = ''
    #print(pattern)
    start = time.time()
    for i in range(1000):
        x = np.reshape(pattern, (1, len(pattern), 1))
        x = x / float(n_vocab)
        prediction = m.predict(x, verbose=0)
        m._make_predict_function()
        index = sample(prediction)
        result = int_to_char[index]
        output = output+result

        pattern.append(index)
        pattern = pattern[1:len(pattern)]

        pattern.append(index)
        pattern = pattern[1:len(pattern)]

1 个答案:

答案 0 :(得分:0)

您可以创建一个后台进程(multiprocessing.Process f.e)在后台执行所有迭代。预测完成后,可以将其存储在变量或数据库中。

在运行后台进程时,您可以定期获取返回结果或正在计算结果的信息的应用程序路由。