测试第一个NB微服务

尝试了一下kernelgateway的notebook_http功能

因为Geoist的定位就是将封装后的地球物理学代码共享给更多的用户使用,所以让python程序以微服务框架为大家服务是理想的解决方案之一。今天在出差的路上没忍住,亲测了一下让Jupyter Notebook变为微服务的kernelgateway服务。作为Jupyter系列项目中的一个,这个功能还是很酷的,只要通过简单的改造,你的nb程序就可以变成microservice啦

  • 首先启动Jupyter Notebook,写一个ipynb文件,本次测试的代码如下:

  • 开始第一个代码块cell

1
2
import math
import json
  • 再写第二个代码块
1
2
3
4
5
6
7
8
9
10
# GET /convert
req = json.loads(REQUEST)
args = req['args']

if 'angle' not in args:
print(json.dumps({'convertedAngle':None}))
else:
angle = int(args['angle'][0])
converted = math.radians(angle)
print(json.dumps({'convertedAngle':converted}))

注意上面的# GET /convert,这个是关键,convert代表将来的微服务入口,这个cell的前三行是固定写法,记下来。里面的print是返回的内容。

  • 写好没问题后,保存到本地,注意目录要能通过http访问到。运行命令不容易记,写在这里吧
1
jupyter kernelgateway --KernelGatewayApp.api='kernel_gateway.notebook_http' --KernelGatewayApp.seed_uri='kgtest.ipynb'

ps:如果出现signal相关错误,可以通过尝试conda update ipykernel解决

演示NB脚本

更多kernelgateway的技术手册