23 天前 / CoderMrWu
今天整理邮件看到 SQLAlchemy 发布了 1.4 版本,其中针对异步的相关功能完全开发了出来,包括 core 和 ORM 的异步能力。虽然文档中说异步功能还处于 alpha 阶段,API 随时可能变动,但好奇的我已忍不住尝试一番。 FastApi 官方文档中推荐使用两个数据库组件 SQLAlchemy 和 databases(encode 开源的异步链接库)。SQLAlchemy 使用其 core 构建 SQL 的能力,databases 用来管理异步的数据库连接。SQLAlchemy 支持了异步数据库链接,我们就可以把 databases 去掉了。
25 天前 / Netwarps
项目地址: https://github.com/netwarps/rust-ipfs 在 rust 中,async-std 和 tokio 作为使用较多的两个异步运行时刻库,有着各自的优点。而 rust-ipfs 是 ipfs 的 rust 实现,采用的 runtime 便是 tokio,底层网络库则是基于 rust-libp2p。为了尝试将底层的 rust-libp2p 修改为libp2p-rs,我们在原仓库的基础上 fork 了一份代码进行移植,目前已完成。现在分享一个在移植过程中遇到的挂起问题。 问题描述 首先我起了一个 go-ipfs 的 daemon,通过 ipfs id 命令获取到 multiaddress 信息。
30 天前 / 高飞
在 .NET Core 中使用异步编程已经很普遍了, 你在项目中随处可见 async 和 await,它简化了异步操作,允许开发人员,使用同步的方式编写异步代码,你会发现在大部分的异步方法中,都提供了 CancellationToken 参数,本文主要介绍下 CancellationTokenSource 和 CancellationToken 在异步任务中的使用。 手动取消任务创建一个 CancellationTokenSource,然后调用异步方法时,传入 CancellationToken,它是一个轻量级对象,可以通知请求是否已取消,我们可以手动调用 cts.Cancel() 来取消任务,为了方面演示,这里我有用到局部方法。
48 天前 / 三分恶
@ 2.1、无返回值的异步方法 2.1、有返回值的异步方法 3.1、方法级别重写 Executor 3.2、应用级别重写 Executor 3.3、自定义线程池配置 “异步调用”对应的是“同步调用”, 在实际开发中,有时候为了及时处理请求和进行响应,我们可能使用异步调用,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。异步调用的实现有很多,例如多线程、定时任务、消息队列等。 这里学习使用 @Async 注解来实现异步调用。
102 天前 / 钟子敬07
承接上文《终于明白了,一文彻底理解 I/O 多路复用》。在这篇文章中我们来讨论一下到底什么是同步,什么是异步,以及在编程中这两个极为重要的概念到底意味着什么。 相信很多同学遇到同步异步这两个词的时候大脑瞬间就像红绿灯失灵的十字路口一样陷入一片懵逼的状态: 是的,这两个看上去很像实际上也很像的词汇给博主造成过很大的困扰,这两个词背后所代表的含义到底是什么呢?我们先从工作场景讲起。 苦逼程序员 假设现在老板分配给了你一个很紧急并且很重要的任务,让你下班前必须完成(万恶的资本主义)。
164 天前 / 影浅
文章目录 1 前言 2 异步处理的方式 3 回调函数 4 Promise5 Generator6 async/await7 错误处理机制 8 读取最大文件实现 8.1 回调函数实现 8.2 Promise 实现 8.3 Generator 实现前言学习完了 Promise,Generator 和 async 之后,用法基本都掌握了,也都理解了他们是如何实现的,但是对于为什么要有它们,在什么时候使用等问题似乎还是云里雾里,本文写一写我对几个异步处理方法的理解。 如果你对 ES6 的异步解决方案还不熟悉,请看之前的几篇文章: 深入 PromiseES6 迭代器 IteratorES6 生成器 Generator 生成器 Generator 的异步应用深入 aync/await 异步处...
165 天前 / Golang梦工厂
前言哈喽,大家好,我是 asong,这次给大家介绍一个 go 的异步任务框架 machinery。使用过 python 的同学们都知道 Celery 框架,machinery 框架就类似于 Celery 框架。下面我们就来学习一下 machinery 的基本使用。 自己翻译一个粗略版的 machinery 中文文档,有需要的伙伴们公众号自取无水印版:后台回复:machinery 即可领取。 或者 github 下载:https://github.com/asong2020/Golang_Dream/tree/master/machinery 抛砖引玉我们在使用某些 APP 时,登陆系统后一般会收到一封邮件或者一个短信提示我们在某个时间某某地点登陆了。
197 天前 / Netwarps
Rust 历史不长,仍然处于快速发展的历程中。关于异步编程的模式,现在已经发展到 async/await 协程的高级阶段。大概是因为 async/await 出现的时间还不长,所以现有大多数的开源项目并不是或不是纯粹使用 async/await 来书写的,而是前前后后有多种的写法。这样的状况给 Rust 的学习带来了一些的难度。在这里,我们来捋一捋异步代码的几种写法。mio 最原始的方式是使用 mio 进行开发。mio 是一个底层异步 I/O 库,提供非阻塞方式的 API,具有很高的性能。实际上 mio 是对于操作系统 epoll/kqueue/IOCP 的封装。
210 天前 / 冷星1024
vue 已是目前国内前端 web 端三分天下之一,同时也作为本人主要技术栈之一,在日常使用中知其然也好奇着所以然,另外最近的社区涌现了一大票 vue 源码阅读类的文章,在下借这个机会从大家的文章和讨论中汲取了一些营养,同时对一些阅读源码时的想法进行总结,出产一些文章,作为自己思考的输出,本人水平有限,欢迎留言讨论~ 目标 Vue 版本:2.5.17-beta.0 vue 源码注释:https://github.com/SHERlocked93/vue-analysis 声明:文章中源码的语法都使用 Flow,并且源码根据需要都有删节 ( 为了不被迷糊 @_@),如果要看完整版的请进入上面的 github 地址...
238 天前 / 钟子敬07
点击蓝色“程序员 DMZ”关注我哟 好看记得加个“星标”哈! 前言其实最近都在研究事务相关的内容,之所以写这么一篇文章是因为前面写了一篇关于循环依赖的文章: 《面试必杀技,讲一讲 Spring 中的循环依赖》 然后,很多同学碰到了下面这个问题,添加了 Spring 提供的一个异步注解 @Async 循环依赖无法被解决了,下面是一些读者的留言跟群里同学碰到的问题: 本着讲一个知识点就要讲明白、讲透彻的原则,我决定单独写一篇这样的文章对 @Async 这个注解做一下详细的介绍,这个注解带来的问题远远不止循环依赖这么简单,如果对它不够熟悉的话建议慎用。
240 天前 / OPPO互联网技术
1. 背景 随着公司业务的发展,核心服务流量越来越大,使用到的资源也越来越多。在微服务架构体系中,大部分的业务是基于 Java 语言实现的,受限于 Java 的线程实现,一个 Java 线程映射到一个 kernel 线程,造成了高并发场景下线程资源的极大浪费,线程成为提高系统并发和吞吐量的瓶颈。 在微服务架构下,使用同步编程模式时不仅造成了资源的极大浪费,并且在流量发生激增波动的时候,受制于系统资源而无法快速的扩容。本文将探索服务异步化在并发、吞吐量方面对系统带来的提升。
278 天前 / marketing-upyun
写文章三分钟了解 Python3 的异步 Web 框架 FastAPI 又拍云已认证的官方帐号 11 人赞同了该文章 FastAPI 介绍 FastAPI 与其它 Python-Web 框架的区别 在 FastAPI 之前,Python 的 Web 框架使用的是 django、flask、tornado 三种 Web 框架。 django 自带 admin,可快速构建,但是比较笨重。如果是 mvc 形式的开发,很多已经封装好了,的确蛮合适。但如果是 restful 风格设计,则 django 就显得有一些笨重了。flask 快速构建,自由度高。
292 天前 / HueiFeng
总篇 101 篇 2020 年 第 25 篇 原文网址: https://www.smashingmagazine.com/2019/10/asynchronous-tasks-modern-javascript/ 本文围绕 JavaScript 的异步发展历程进行探讨,看一下它是如何改变我们编写和读取代码的方式。我们的探讨将从早期 Web 开发开始,到现代异步模式。 JavaScript 作为编程语言具有两个主要特征,这两个特征对我们理解代码如何工作很重要。一个是同步特性,这意味着代码逐行运行,另一个是单线程,任何时候都只执行一个命令。 随着语言的发展,需要异步执行的模块出现在应用场景中。
303 天前 / reesunhuang
最近因为全链路压测项目需要对用户自定义线程池 Bean 进行适配工作,我们知道全链路压测的核心思想是对流量压测进行标记,因此我们需要给压测的流量请求进行打标,并在链路中进行传递,那么问题来了,如果项目中使用了多线程处理业务,就会造成父子线程间无法传递压测打标数据,不过可以利用阿里开源的 ttl 解决这个问题。 全链路压测项目的宗旨就是不让用户感知这个项目的存在,因此我们不可能让用户去对其线程池进行改造的,我们需要主动去适配用户自定义的线程池。
309 天前 / 编程一生
场景 假设在 web 环境下有一个线程 A 需要 10 分钟后调用操作 B。好在只要调用就可以不需要知道 B 的返回结果。 这种场景下实际上可以通过发送延迟消息队列来完成,A 执行时发送一个延迟消息队列,它就可以去干别的事情了,这是安全可靠的做法。但是这个操作有点重,延迟消息队列是有成本的,包含资源成本和开发维护成本。 更省事的做法是通过线程 sleep 来做,但是这时候要注意了,线程 sleep 虽然让出了 cpu,但是线程资源并没有释放。在 web 服务器比如 tomcat、jetty 这些,线程池是有固定大小的,默认是 150。