【问题标题】:Jupyter Notebook Custom ServiceJupyter 笔记本定制服务
【发布时间】:2020-12-16 17:55:34
【问题描述】:

我想为 Jupyter Notebook 编写一个新服务。但我无法弄清楚如何让它运行。我创建了一个类似于此处https://github.com/jupyter/notebook/tree/master/notebook/services 的默认服务的服务。

我正在尝试在由jupyter/base-notebook 构建的 Docker 容器中运行它。我已将 c.NotebookApp.extra_services = ['TestHandler'] 添加到笔记本配置中,并将我的服务复制到 /opt/conda/lib/python3.6/site-packages/notebook/services/test.py

当我启动笔记本服务器时,我收到一条错误消息ModuleNotFoundError: No module named 'TestHandler',所以很明显我的服务没有正确加载。不幸的是,我找不到任何关于如何在 Jupyter Notebook 中加载服务的文档。

这是我的test.py 服务:

import json

from tornado import web

from ...base.handlers import APIHandler


class TestHandler(APIHandler):

    @web.authenticated
    def get(self):
        res = { "foo": "bar" }
        self.finish(json.dumps(res))

default_handlers = [
    (r"/api/test", TestHandler),
]

【问题讨论】:

    标签: python jupyter-notebook


    【解决方案1】:

    该配置值需要一个具有default_handlers 属性的可导入模块列表。因此,您可以使用完整路径:

    # assuming your `test.py` lives in a top level package `mypackage`
    c.NotebookApp.extra_services = ['mypackage.test']
    

    您也可以直接构造一个模块:

    import sys
    from types import ModuleType
    
    name = 'some_long_ass_name_that_doesnt_conflict'
    sys.modules[name] = ModuleType(name)  # make the import machinery find it
    sys.modules[name].default_handlers = [...]
    
    c.NotebookApp.extra_services = [name]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多