- 主题:支持async接口, 几个a函数, 规范是怎么样的
所以这个 async/await 就是垃圾啊。换 gevent/eventlet.
后面 __add__, __getitem__, __getattr__ 是不是都要有 async 对应的接口版本。往 python 里面添加 async/await 关键字的人根本没想明白。见一次喷一次。
【 在 poggy 的大作中提到: 】
: async with: __aenter__, __aexit__
: async for: __aiter__, __anext__
: await: __await__
: ...................
--
FROM 120.33.11.*
最早用 stackless python,后来有大牛把 stackless python 的核心 port 到 CPython 弄了 greenlet 模块,由此产生了 eventlet 和 gevent 两个好东东。我到现在都在用这两个。推荐大家用 gevent 来搞 python 协程。
在 async/await 之前,可以用 yield from 来做协程。twisted 用这个技术弄了个 inlineCallbacks. 后来 Python3 的开发人员脑抽了,从 c# 抄了 async/await 过来,python 社区陷入一团混乱。
楼主在问 __aenter__ 这些 magic method 的写法,就是 async/await 最重大的设计缺陷——它们是传染的,再搞下去最终 python 会分裂成 async 和非 async 两个社区。类似于 requests 已经有协程版本和非协程版本了。
【 在 JulyClyde 的大作中提到: 】
: async/await不是更换过一次嘛
: 你对新旧两种都这么批判的话,我可以继续拖着不学了……
--
FROM 124.72.111.*
是啊。所有 async/await 都别用。用 gevent.
【 在 JulyClyde 的大作中提到: 】
: 看你的意思,别用它就行了?
--
FROM 124.72.111.*
但没关系啊。用 gevent 的 monkey patch 完全不愁缺模块。
而用上 async/await 的话,你就得考虑有没有人开发对应的 async 版本的模块了。比如 mysql-client 你得改用 asyncmy,pgsql 你得改用 asyncpg,再换个数据库。。可能没有了。
【 在 JulyClyde 的大作中提到: 】
: 唉不过我记得从3.7开始async成为关键字了
--
FROM 124.72.111.*