对PEP-567 ContextVars后台端口的异步支持。

aiocontextvars的Python项目详细描述


所有内容

https://img.shields.io/pypi/v/aiocontextvars.svghttps://img.shields.io/travis/fantix/aiocontextvars.svg

重要:此包将在 contextvars asyncio backport已修复。在那之前,这个图书馆 实验性地为 contextvarsbackport库请阅读python 3.7contextvars documentation中的更多内容。

兼容性

在python 3.7中,这个包100%contextvars

在Python3.5和3.6中,这个包向PEP-567添加了异步支持 backport包也被命名为contextvars,其方式与 python 3.7contextvars实现:

  1. call_soon()和family方法。

python 3.7向call_soon()及其系列添加了关键字参数context。 方法。默认情况下,这些方法将复制(继承)当前上下文并 在该上下文中运行给定的方法。但是aiocontextvars不会碰 为了达到同样的效果,你需要:

loop.call_soon(copy_context().run, my_meth)
  1. 任务本地。

python 3.7在Task中使用了上面的关键字参数context,以确保 协同程序的每个步骤都在同一个上下文中运行 它的驾驶任务被创造出来了同时,aiocontextvars使用 Task.current_task()实现类似的效果:它破解异步和 在任务创建时将复制的上下文附加到任务,并替换线程 与当前任务实例本地共享上下文。这种行为完全相同 在大多数情况下是Python3.7你需要做的是导入 aiocontextvars在创建循环之前。

  1. 自定义任务和循环。

因为上面的hack是通过替换asyncio.get_event_looploop.create_task,因此由自定义/私有API创建的任务和循环 无法按预期正确工作,例如uvloop.new_event_loop()asyncio.Task()。另外,在导入之前创建的事件循环 aiocontextvars也没有修补。所以总的来说,你应该导入 aiocontextvars在创建事件循环之前,始终使用 asyncio.*来操作循环/策略,并创建公共异步api 任务。

学分

范提克金是这个图书馆的作者和维护者。这个图书馆是开放的 BSD许可下的源软件。

历史记录

0.2.1(2018-10-24)

  • 已更改为单模块布局
  • 更新了自述文件。

0.2.0(2018-09-09)

这是一个突破性的变化。大多数实现被替换为 contextvars。在python 3.5和3.6中,aiocontextvars依赖于 contextvarspypi中的pep-567后台端口,并将其部分修补到 支持异步;在python 3.7中aiocontextvars只是 内置contextvars库。

  • 修改了ContextVar.set()以返回令牌。
  • 添加了ContextVar.reset(token)
  • 已删除ContextVar.delete()
  • 删除了enable_inherit()disable_inherit(),始终启用inherit。
  • 添加了copy_context()Context.run()
  • 删除了Context.current()Context.inherited
  • 修正了set_event_loop(None)失败的问题(由j.j.jackson在10 11中贡献)

0.1.2(2018-04-04)

  • 支持Python3.5。

0.1.1(2017-12-03)

  • fixed setup.py

0.1.0(2017-12-03)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java需要64位jdk 1.5 for windows   eclipse运算符+对于参数类型java是未定义的。双,爪哇。双人   未下载文件扩展名为的java文件   java不支持带有POST的媒体类型   从动态创建的多个EditText读取文本时发生java错误   java无法为同一xpath单击多个按钮   如何在Java中动态格式化字符串   java Android Clear Middle活动   多线程Java内存模型volatile和x86   git在Java中通过Jgit忽略文件或文件夹   java“决策无法区分输入的备选方案1、2…”   子类的javajpa继承   java需要弄清楚如何操作mutator来弄清楚一个类,教授说,我对如何操作感到困惑   java如何使用JDBC将数据从文件复制到PostgreSQL?