jupyter kernelgateway对外暴露服务

本文主要介绍 jupyter kernelgateway 在工作中的运用

基本介绍

Jupyter Kernel Gateway 是一个 Web 服务器,提供对 Jupyter 内核的无头访问。应用程序通过 REST 调用和 Websockets 远程与内核通信。

安装

shell 复制代码
pip install jupyter_kernel_gateway

运行

shell 复制代码
jupyter kernelgateway

定义一个./my_example.ipynb,使用 jupyter kernelgateway 对外暴露服务

python 复制代码
# GET /hello/world

import json
import requests
import numpy as np

req = json.loads(REQUEST)
res = dict(data=np.random.randn(5, 4).tolist(), request=req)
print(json.dumps(res))
bash 复制代码
jupyter kernelgateway --KernelGatewayApp.api=kernel_gateway.notebook_http --KernelGatewayApp.seed_uri=./my_example.ipynb --port=10100
[KernelGatewayApp] Kernel started: 12ac2daa-c62a-47e4-964a-336734557656
[KernelGatewayApp] Registering resource: /hello/world, methods: (['GET'])
[KernelGatewayApp] Registering resource: /_api/spec/swagger.json, methods: (GET)
[KernelGatewayApp] Jupyter Kernel Gateway at http://127.0.0.1:10100

GET 调用

定义一个带有两个路径参数 firstName 和 lastName 的接口

python 复制代码
# GET /hello/:firstName/:lastName

req = json.loads(REQUEST)
data = req['path']
logging.info("name:%s" % (data['firstName']), extra = extra)
logging.info("name:%s" % (data['lastName']), extra = extra)

POST 调用

python 复制代码
# POST /consistency_check/hive_vs_hive

req = json.loads(REQUEST)
data = req['body']
logging.info("请求参数:%s" % json.dumps(data), extra = extra)

可以看到 GET 和 POST ,取值的不同,GET 是从 REQUEST 对象的 path中取值,POST 是从 REQUEST 对象的 body中取值。

工作使用

两个数仓之间的数据比对、以及 hive 和 mysql 之间的数据导入导出,都是用 pyspark 实现的。

在 java 端会调用 python 服务,此时就是使用 jupyter kernelgateway 来对外暴露 python 服务的。

那么 java 和 python 之间是怎么通信的呢?

其实是通过 redis 的发布订阅模式,java 端去订阅channel,python 端执行结束后发布事件。

相关推荐
yy我不解释14 分钟前
关于comfyui的mmaudio音频生成插件时时间不一致问题(一)
python·ai作画·音视频·comfyui
紫丁香1 小时前
AutoGen详解一
后端·python·flask
FreakStudio1 小时前
不用费劲编译ulab了!纯Mpy矩阵micronumpy库,单片机直接跑
python·嵌入式·边缘计算·电子diy
粤M温同学3 小时前
Android Studio 中安装 CodeBuddy AI助手
android·ide·android studio
清水白石0084 小时前
Free-Threaded Python 实战指南:机遇、风险与 PoC 验证方案
java·python·算法
飞Link4 小时前
具身智能核心架构之 Python 行为树 (py_trees) 深度剖析与实战
开发语言·人工智能·python·架构
桃气媛媛4 小时前
Pycharm常用快捷键
python·pycharm
学会放下ta4 小时前
安装breakpad
ide
Looooking5 小时前
Python 之获取安装包所占用磁盘空间大小
python
WenGyyyL5 小时前
ColBERT论文研读——NLP(IR)里程碑之作
人工智能·python·语言模型·自然语言处理