python - 如何使我的 Haskell 函数在我的 Python Flask 应用程序中可用?
问题描述
我有一个用 Haskell 编写的机器学习模型,但想在前端使用 Python 和 Flask。如何从我的 Python Flask 应用程序中将数据传递给我的 Haskell 函数?一些代码示例会很有帮助——到目前为止我已经看过 Servant,但不知道这将如何与已经存在的 Flask 应用程序一起工作。
解决方案
如果您正在寻找一种合理快速的方法来为您的机器学习模型创建基于 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 并在其完成时将结果发送到。
推荐阅读
- fabricjs - FabricJS 更新边界框
- c++ - 如何在不声明变量的情况下获取和使用常量值的地址?
- scala - Scala ListBuffer 不能用作 Flink 中的 POJO 类型
- oracle - 如何更改表监控设置
- c# - 如何使用另一个表的 ID 显示表列?
- python - Numpy 对几乎相同的代码给出不同的结果?
- elasticsearch - Elasticsearch 不返回具有相同令牌的结果?
- angular - 如何修复 Angular 8 中的 jw-modal 选择器问题
- mysql - 无法从 MySQL Workbench 连接到 RDS MySQL 数据库
- python - 卷积网络中激活/特征图维度的约束