首页 > 解决方案 > 如何使我的 Haskell 函数在我的 Python Flask 应用程序中可用?

问题描述

我有一个用 Haskell 编写的机器学习模型,但想在前端使用 Python 和 Flask。如何从我的 Python Flask 应用程序中将数据传递给我的 Haskell 函数?一些代码示例会很有帮助——到目前为止我已经看过 Servant,但不知道这将如何与已经存在的 Flask 应用程序一起工作。

标签: pythonhttphaskellflask

解决方案


如果您正在寻找一种合理快速的方法来为您的机器学习模型创建基于 Web 的界面,如 FifthCode 所建议的,您可能需要考虑Scotty。这是一个受 Sinatra 启发的 Haskell 网络框架。

{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty

import Data.Monoid (mconcat)

main = scotty 3000 $
    get "/:word" $ do
        beam <- param "word"
        html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]

值得注意的是,像这样使用 REST API 的调用会阻塞。根据您的机器学习模型运行所需的时间,您可能希望使用 webhook 方法,在该方法中使用 HTTP/HTTPS 提交作业,并在您的烧瓶应用程序中包含一个 webhook URL,Scotty 应用程序将在完成后发布到该 URL运行模型。

当您的 Flask 应用程序 POST 到 Scotty 应用程序上的 /predict 时,它将最终阻塞,直到 Scotty 应用程序响应。让 Scotty 应用程序为 ML 工作生成一个线程,然后立即以 204 Accepted 响应,然后 ML 线程 POST 到 Flask 应用程序上的 /prediction 并在其完成时将结果发送到。


推荐阅读