异步并发处理利器:在 Jupyter Notebook 中玩转 asyncio

news2024/9/21 8:03:02

asyncio.run报错

RuntimeError: asyncio.run() cannot be called from a running event loop
jupyter notebook中运行下述代码就会出现上述报错

import uvicorn
from fastapi import FastAPI
from fastapi.responses import JSONResponse

app = FastAPI()
@app.get(“/”)
def root():
return JSONResponse({“status”:200}, status_code=405)

if name == ‘main’:
uvicorn.run(app, host=“127.0.0.1”, port=8080)

在 Jupyter Notebook 中使用 asyncio.run() 报错通常是因为 Jupyter Notebook 已经运行在一个事件循环(event loop)内部。asyncio.run() 函数是为了启动一个新的异步事件循环而设计的,它不应该在一个已经运行的事件循环内调用。
为了解决这个问题,你可以直接使用事件循环的现有实例来运行你的异步代码,而不是尝试创建一个新的。以下是一个示例,展示了如何在 Jupyter Notebook 中正确地运行异步代码:

import asyncio
async def main():
    # 这里写你的异步代码
    print('Hello')
    await asyncio.sleep(1)
    print('World')
# 在 Jupyter 中,你可以使用下面的方式来运行异步函数
await main()

如果你需要在一个非异步的上下文中运行异步代码,你可以使用如下方法:

import nest_asyncio
# 这行代码使得在已有的 event loop 中可以嵌套运行 asyncio.run
nest_asyncio.apply()
asyncio.run(main())

## nest_asyncio

nest_asyncio 是一个库,允许你在已有的 asyncio 事件循环中运行 asyncio.run()。你可以通过以下命令安装 nest_asyncio

pip install nest_asyncio

在使用 nest_asyncio.apply() 后,你应该能够在 Jupyter Notebook 中正常使用 asyncio.run()。但请注意,通常情况下,在 Jupyter Notebook 中直接使用 await 来调用异步函数更为简单和直接。

import uvicorn
from fastapi import FastAPI
from fastapi.responses import JSONResponse

app = FastAPI()


@app.get("/")
def root():
    return JSONResponse({"status":200}, status_code=405)

import nest_asyncio

if __name__ == '__main__':
    nest_asyncio.apply()
    uvicorn.run(app, host="127.0.0.1", port=8080)

notebook
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2099126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Openwrt 安装 AX210 无线网卡

安装 TTYD 我安装的是官方原版的 Openwrt,首先需要安装 YYTD 来从网页控制 Openwrt。 安装驱动 参考这个链接,跟着做。 iwlwifi-firmware-ax210 我买设备技术提供代码如下,但是没有安装 成功,中间报错。 opkg update opkg i…

<el-table> 把表格内同一列相同的数据合并为一行

<el-table> 把表格内同一列相同的数据合并为一行 具体效果如下图&#xff1a; 参考代码&#xff08;可直接运行&#xff09;&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"/><meta name"viewport" co…

SpringBoot中基于MongoDB的findAndModify原子操作实现分布式锁原理详解

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

html简单注册页面

简单的html注册页面&#xff0c;代码如下&#xff0c;效果如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&l…

Linux | 匿名管道和命名管道:进程间通信数据流的桥梁

目录 1、进程间通信目的 2、管道——匿名管道和命名管道 匿名管道 匿名管道的示例代码&#xff1a;将数据写入管道、子进程从管道读取数据并将其输出到bash中 父子进程通过匿名管道建立通信 重点&#xff1a;管道的五个特点 命名管道&#xff08;也称为FIFO&#xff09;…

Java项目:128 基于Spring Boot的装饰工程管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本系统包含管理员、员工和客户角色 管理员权限操作的功能包括管理合同信息&#xff0c;管理合同报价&#xff0c;管理立项项目&#xff0c;管…

机器学习:opencv--图像边缘检测

目录 前言 一、图像边缘检测 1.边缘检测 2.边缘检测的方法 二、Sobel算子 1.Sobel算子 2.计算 3.代码实现 4.代码步骤解析 1.导入图片 2.处理x轴和y轴的边缘并相加 三、Scharr算子 1.Scharr算子 2.计算 3.代码实现 四、Laplacian算子 1.Lapla…

本地部署训练、测试controlnet的完整过程(包括报错和代码)

文章目录 参考内容一、训练流程下载相关文件① 需要下载的权重文件② 下载数据集 二、训练代码两种训练方式&#xff1a;①采用.sh文件②常规的训练 测试代码生成的结果 四、报错NVIDIA的驱动太老需要更新生成出全黑图 参考内容 diffusers库提供的官方训练代码 利用到的fill50…

Vue(六) render函数、Vue.config.js配置文件,ref属性,props配置项、mixin混入、插件、scoped

文章目录 一、render函数二、Vue.config.js配置文件三. ref属性四. props配置项五. mixin混入1. 局部混入2. 全局混入 六. 插件七. scoped 一、render函数 在main.js文件中&#xff0c;采用了render函数。 import App from ./App.vuenew Vue({// 这句代码的意思是将App组件放…

Springboot整合J2cache实现声明式缓存方案

Springboot整合J2Cache 一、J2Caceh多级缓存 ​ J2Cache 是 OSChina 目前正在使用的两级缓存框架&#xff08;要求至少 Java 8&#xff09;。 ​ 第一级缓存使用内存(同时支持 Ehcache 2.x、Ehcache 3.x 和 Caffeine)&#xff0c;第二级缓存使用 Redis(推荐)/Memcached 。 L…

【生日视频制作】红色跑车法拉利提车交车仪式感广告展示牌AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程红色跑车法拉利提车交车仪式感广告展示牌AE模板修改文字特效广软件告生成神器素材祝福玩法AE模板工程 怎么如何做的【生日视频制作】红色跑车法拉利提车交车仪式感广告展示牌AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤&#xff1a; 安…

Java小项目IDEA怎么打成jar包

使用IDEA打jar包 在file选项中找 打开jar包所在位置&#xff1a; 将jar包拿出来 直接点击jar包就可以运行

golang关于slice map函数传参的小问题

问题 函数传参了一个slice&#xff0c;在函数内触发了对长度的修改&#xff08;添加或删除&#xff09;&#xff0c;但是未影响函数外的实参由此产生了另一个问题&#xff0c;我们用map在函数内修改会不会有影响不到实参的情况&#xff1f; 结论 map作为函数参数时是引用传递…

go语言并发编程-超详细mutex解析

文章目录 1 go语言并发编程学习-mutex1.1 学习过程1.2 如何解决资源并发访问的问题&#xff1f;【基本用法】1.2.1 并发访问带来的问题1.2.1.1 导致问题的原因 1.2.2 race detector检查data race1.2.3 mutex的基本实现机制以及使用方法1.2.3.1 具体使用-11.2.3.1 具体使用-2 1 …

@Tanstack/vue-query 的使用介绍

Tanstack/vue-query 的使用介绍 前言 在今年的vue conf 会议上&#xff0c;提到了vue-query这个库&#xff0c;这里对它的基本使用做一个介绍。 会议资料地址&#xff1a; https://vueconf.cn/ Tanstack-query的前身是react-query&#xff0c;是一个本地的服务端状态管理的库…

deepin 23 下如何运行绝大数 Windows 游戏?

查看原文 最近有很多 deepiner 一直在询问&#xff1a; “deepin 真的可以玩游戏&#xff1f;” “如何在 deepin 上玩游戏&#xff1f;能玩 windows 上的游戏吗&#xff1f;” 答案是肯定的 “必须能&#xff01;”&#xff0c;下文和大家分享一下在 deepin 上玩游戏实现的…

使用IoC容器--Ninject

Ninject Ninject是一个较新的开源的IoC容器。这是简单和可扩展的。你可以从下面的位置下载IoC容器。 Ninject 或者您可以使用 NuGet 向您的项目添加Ninject。让我们从NuGet向我们的项目中添加Ninject。只需转到您的项目引用并右键单击&#xff0c;然后 ManageNuGet Packages&a…

Java基础 2. Java基础语法

Java基础 2. Java基础语法 文章目录 Java基础 2. Java基础语法2.1. 标识符2.1.1. 标识符的命名规则 :2.1.2. 标识符的命名规范: 2.2. 关键字2.3. 字面量2.3.1. Java中有哪些字面量2.3.2. 加号运算符 2.4. 变量2.5. 二进制2.6. 八进制与十六进制2.7. 原码反码补码2.7.1. byte与b…

每日OJ_牛客_字符串计数(模拟26进制)

目录 牛客_分解因数&#xff08;简单模拟&#xff09; 解析代码 牛客_分解因数&#xff08;简单模拟&#xff09; 字符串计数_美团笔试题_牛客网 解析代码 题目意思&#xff1a;按照字典序列&#xff1a;找到s1和s2之间长度在len1和len2范围内的字符串个数。直接做不好处理&…

UE4 使用AndroidGameDevelopmentExtension(AGDE)对安卓客户端做“断点调试”与“代码热更”

本文的目的 主要介绍了如何通过AndroidGameDevelopmentExtension工具、Visual Studio 2022来进行安卓包调试。 流程全过程 1、安装JDK、Gradle、Android NDK、Android SDK等环境如下&#xff0c;请自行前往官网下载&#xff0c;并确认环境参数配置正确。 2、安装 AndroidGame…