gpt4 book ai didi

django - 如何在 Jupyter Notebook 中使用 django 3.0 ORM 而不触发异步上下文检查?

转载 作者:行者123 更新时间:2023-12-01 16:02:52 24 4
gpt4 key购买 nike

Django 3.0 正在添加 asgi / async support and with it a guard around making synchronous requests in an async context 。同时,IPython just added top level async/await support ,它似乎在默认事件循环内运行整个解释器 session 。

不幸的是,这两个伟大的补充的结合意味着jupyter笔记本中的任何django ORM操作都会导致SynchronousOnlyOperation异常:

SynchronousOnlyOperation: You cannot call this from an async context - use a thread or sync_to_async.

正如异常消息所述,可以将每个 ORM 调用包装在 sync_to_async() 中,如下所示:

images = await sync_to_async(Image.objects.all)()

但这不是很方便,特别是对于通常在属性查找时隐式解析的相关字段。

(我尝试了 %autoawait off 魔法,但它不起作用,快速浏览一下 the docs 我假设这是因为 ipykernels 始终在异步循环中运行)

那么有没有办法在 django 中禁用异步上下文中的同步检查或在同步上下文中运行 ipykernel?

<小时/>

对于上下文:我编写了一个数据科学包,它使用 django 作为后端服务器,但还在 ORM 之上公开了一个基于 jupyter 的接口(interface),允许您清理/注释数据、跟踪机器学习实验并运行训练作业。一个 jupyter 笔记本。

最佳答案

这对我有用

os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"

顺便说一句,我使用命令启动我的笔记本

./manage.py shell_plus --notebook

关于django - 如何在 Jupyter Notebook 中使用 django 3.0 ORM 而不触发异步上下文检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59119396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com