asyncpg

Use asyncpg python module in alpine docker image

て烟熏妆下的殇ゞ 提交于 2021-01-29 16:36:56
问题 I'm trying to build an image based on python:3-8.alpine , using the python module asyncpg . Here is a part of my Dockerfile: FROM python:3.8-alpine RUN apk add gcc RUN apk add python3-dev RUN pip3 install asyncpg I added gcc and python3-dev because I think I need them to be able to build asyncpg according to the documentation : https://magicstack.github.io/asyncpg/current/installation.html (but i'm not sure of that, I think I should be able to install without building this module) But I have

Python 异步编程再添一利器

扶醉桌前 提交于 2020-05-05 12:47:34
随着 Tornado 和 asyncio 等框架的陆续涌现,Python 异步编程这个话题也在逐渐升温。在这个烧脑的异步世界里,有没有办法可以既方便快捷、又简单明了地访问数据库呢?GitHub 千星项目 GINO 了解一下! 1. GINO 是谁 GINO 是一个“轻量级”异步 ORM 框架,它的全称是 GINO Is Not ORM,借鉴了 GNU is Not Unix 的递归定义手法。所以,GINO 一定要全!部!大!写!如果像这样“Gino”就变成了人名,你肯定要问一句“这是谁”。 ORM,即关系对象映射(Object-Relational Mapping),是一类开发人员喜闻乐见的效率工具,它们"极大地"提升了写代码的幸福指数。GINO 是用来访问数据库的,也提供了对象映射的工具,那为什么非说 GINO 不是 ORM 呢? 因为物极必反,ORM 在带来生活便利的同时,也是 bug 生长的温床 —— 传统 ORM 往往会选择牺牲明确性(explicitness)来换取便捷性(convenience),再加上 Python 得天独厚的灵活性(flexibility),创造出了一种爆炸式的化学反应。一旦代码初具规模,项目或多或少都会遇到 ORM 反噬的情景:性能莫名其妙的差、出问题找不到原因、为了鸡毛蒜皮的小事大动干戈。随便一句 current_user.name

python教程:使用 async 和 await 协程进行并发编程

江枫思渺然 提交于 2020-04-21 13:08:11
python 一直在进行并发编程的优化, 比较熟知的是使用 thread 模块多线程和 multiprocessing 多进程,后来慢慢引入基于 yield 关键字的协程。 而近几个版本,python 对于协程的写法进行了大幅的优化,很多之前的协程写法不被官方推荐了。如果你之前了解过 python 协程,你应该看看最新的用法。 并发、并行、同步和异步 并发指的是 一个 CPU 同时处理多个程序,但是在同一时间点只会处理其中一个。并发的核心是:程序切换。 但是因为程序切换的速度非常快,1 秒钟内可以完全很多次程序切换,肉眼无法感知。 并行指的是多个 CPU 同时处理多个程序,同一时间点可以处理多个。 同步:执行 IO 操作时,必须等待执行完成才得到返回结果。 异步:执行 IO 操作时,不必等待执行就能得到返回结果。 协程,线程和进程的区别 多进程通常利用的是多核 CPU 的优势,同时执行多个计算任务。每个进程有自己独立的内存管理,所以不同进程之间要进行数据通信比较麻烦。 多线程是在一个 cpu 上创建多个子任务,当某一个子任务休息的时候其他任务接着执行。多线程的控制是由 python 自己控制的。 子线程之间的内存是共享的,并不需要额外的数据通信机制。但是线程存在数据同步问题,所以要有锁机制。 协程的实现是在一个线程内实现的,相当于流水线作业。由于线程切换的消耗比较大