sys:1: RuntimeWarning: 从未等待协程

2024-04-01

我正在尝试编写一个请求处理程序来帮助我以异步模式发送请求。当我使用 Ctrl+D 或 exit() 关闭 python 终端时它会提示

表明sys:1: RuntimeWarning: coroutine was never awaited

import asyncio
import urllib.request
import json 

class RequestHandler:
    def SendPostRequest(method="post",url=None, JsonFormatData={}):
        # Encode JSON
        data =json.dumps(JsonFormatData).encode('utf8')
        # Config Request Header
        req = urllib.request.Request(url)
        req.add_header('Content-Type', 'application/json')      
        # Send request and wait the response
        response = urllib.request.urlopen(req,data=data)    
        return response 

    async def AsyncSend(method="post",url=None, JsonFormatData=None):
        if method == "post":
            loop = asyncio.get_event_loop()
            task = loop.create_task(SendPostRequest(method="post",url=url,JsonFormatData=JsonFormatData))

###################################
# Example
##### In main python terminal, i run like this:
# from RequestHandler import * 
# RequestHandler.AsyncSend(method="post",url="xxxxxx", JsonFormatData={'key':'value'} )

当我点击 Ctrl+D 时,它提示

sys:1: RuntimeWarning: coroutine 'RequestHandler.AsyncSend' was never awaited

难道我就该无视它吗?我不想打电话await,因为我不在乎这个过程是否成功。

在这个链接“https://xinhuang.github.io/posts/2017-07-31-common-mistakes-using-python3-asyncio.html”中,它说“要在没有await的情况下执行异步任务,请使用循环。 create_task() 和loop.run_until_complete()”,那是错误的吗?


我认为您将 JS 异步 API 与 Python 混淆了。在 Python 中,当您调用协程函数时,它会返回一个协程(类似于武装生成器),但不会将其安排在事件循环中。 (即不运行/消耗它)

您有两个选择:

1)您可以通过以下方式等待await或年龄较大的yield from.

2)你可以asyncio.create_task(coroutine_function())。这相当于在 JS 中调用一个 Promise,而不给它一个处理程序或等待它。

您看到的警告告诉您协程没有运行。它只是被创建,但没有被消耗。

至于您的代码,有两个错误。首先urllib是一个阻塞库,你不能从中创建任务,也不能异步运行,看看aiohttp.ClientSession反而。

其次,您看到的警告可能是由您致电引起的AsyncSend同步(无需等待)。同样,在 JS 中这可能没问题,因为 JS 中的所有内容都是异步的。在 Python 中,您应该使用我上面提到的两种主要方法之一。

如果您坚持使用阻塞库,则可以在不同的线程上运行它,这样就不会阻塞事件循环。正如 Cloudomation 提到的,要做到这一点。你应该使用asyncio.run_in_executor(None, lambda: your_urllib_function())

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sys:1: RuntimeWarning: 从未等待协程 的相关文章

  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 将 github 上的包安装到 Spyder 中

    我一直在尝试安装并导入mpl finance来自 github 的包 在我的 Spyder 环境中没有成功 我努力了 pip install e git https github com matplotlib mpl finance git
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数

随机推荐

  • MUI v5 - 将组件名称添加到“样式”类名称中?

    我在 github 和这里进行了一些搜索 但也许我的做法是错误的 Using styled from mui material styles生成随机类名 如下所示 const TitleWrapper styled div display
  • Android 中整个应用程序的选项菜单?

    我可以为单个活动创建一个选项菜单 但现在我想在菜单中创建一个注销选项 该选项应该在应用程序中的所有活动中可用 有没有可能为应用程序创建一次选项菜单 我曾经回答过这个问题 但我忘了在哪里 所以我又来了 它非常简单 创建一个BaseActivi
  • “机器硬件”和“硬件平台”的区别

    我的 Linux 机器报告 uname a 输出如下 root tom i386 uname a Linux tom 2 6 9 89 ELsmp 1 SMP Mon Apr 20 10 34 33 EDT 2009 i686 i686 i
  • 将单列文本输入重新排列为多列

    我正在将 jTable 用于我目前正在进行的一个项目 想看看你们是否可以帮助解决我遇到的 CSS 问题 我在下面制作了一个 jsfiddle 当我向 jTable 添加新记录时会弹出该表单 因为我有很多行 所以它比可见屏幕长 您认为通过一些
  • 为什么 Git 中会忽略 IDE 特定的项目文件?

    我看到 Github 上发布的许多项目都有一个 gitignore文件明确排除与 IDE 相关的控制文件 这些控制文件广泛用于定义项目及其依赖项 这些可以是 sln对于 NET 或 project对于 Eclipse 我想问为什么这种做法被
  • Angular ngAnimate 在页面加载时第一次无法工作

    我正在使用 ngAnimate 除了页面加载后第一次之外 它的效果都很好 我有一些像这样的html a href newcontent a div class content div 使用路由单击链接时视图会更新 如下所示 app conf
  • 如何更改 Eclipse 项目的 JDK 版本

    我需要编写一个仅与 Java 1 5 兼容的项目 我安装了Java 1 6 是否有某种形式的向后兼容性可以让 Eclipse 使用 1 5 进行编译 我是否必须安装 Java 1 5 才能在此处显示 或者也许还有另一种方法 单击添加库按钮
  • 将 d3-tip 与 npm 一起使用:“未捕获类型错误:无法读取未定义的属性‘节点’”?

    我已经安装了d3 3 5 17 and d3 tip 0 7 1 使用 npm d3 tip 文档 https www npmjs com package d3 tip 然后在我的index js文件我有这个代码 var d3 requir
  • 用于翻译的 MySQL 结构

    根据这种方法 默认语言是已经翻译了在第一个表中 如果用户不需要翻译 他就不会为之烦恼 只需连接主表 仅此而已 产品表 InnoDB Obj id PK name desc 1 Million Dollar Baby Short descri
  • 在 Oracle 11g 中如何将分区表从一个表空间移动到另一个表空间?

    我有一个属于表空间的分区表report 我想将它移动到表空间record反而 一种可能性是删除表并在新表空间中重新创建它 但这对我来说不是一个选择 因为表中的数据需要在移动后继续存在 我首先检查分区是否确实属于表空间报告 SELECT FR
  • Symfony 2:如何渲染没有日期的日期字段?

    我正在尝试构建带有日期字段的表单 其中用户只能选择月份和年份 没有月份中的某一天 但我不知道如何实现这一点 public function buildForm FormBuilderInterface builder array optio
  • 停止加载 iframe

    所以我有 iframe 并且我正在通过它上传文件 所以我的问题是如何在加载过程中停止它 我尝试使用 jquery 函数更改 srcattr 但我没有做任何好事 我正在考虑删除整个 iframejs但这会给我带来其他问题 我什至不确定它是否有
  • 为什么排序(Comparator::reverseOrder)不起作用?

    下面的 Stream 表达式工作得很好 Stream
  • Itextsharp:导入页面时有没有办法复制链接?

    我正在开发一个项目 需要在显示 pdf 之前对其进行编辑 I need 添加水印 编辑权限 锁定以避免 复制 粘贴 和 另存为 编辑观众偏好 我做到了 并且工作正常 除了一件事 原始文件中的链接在新文件中不起作用 有什么想法吗 注意 实际上
  • 重命名 Identity 表并导致 EF6 迁移失败

    我正在尝试通过 EF6 Package Manager 中的迁移工具重命名我的 Identity 2 0 表 然而 它已经炸毁了一部分 我只是在 IdentityModels cs 中的 ApplicationDBContext Creat
  • 流式执行 exec.Command StdoutPipe

    我正在尝试将 shell 命令的标准输出流式传输到控制台 但遇到困难 这是我目前拥有的 cmd exec Command sh c for number in 0 10 do echo number done pipe cmd Stdout
  • 具有多重继承的 XML 模式

    XML 模式中是否可以具有多重继承 如果可以 如何实现 Example
  • MySQL中如何声明内表?

    我想知道如何在 MySQL 中定义或声明内表 我是 MySQL 新手 不知道语法 如你所见 我创建了存储过程 CREATE DEFINER root localhost PROCEDURE MySP actioncode VARCHAR 5
  • 从 Xcode 11.1 升级到 Xcode 11.2 后,应用程序因 _UITextLayoutView 崩溃

    从 Xcode 11 1 升级到 Xcode 11 2 后 我的应用程序崩溃了 由于未捕获的异常 NSInvalidUnarchiveOperationException 而终止应用程序 原因 无法实例化名为 UITextLayoutVie
  • sys:1: RuntimeWarning: 从未等待协程

    我正在尝试编写一个请求处理程序来帮助我以异步模式发送请求 当我使用 Ctrl D 或 exit 关闭 python 终端时它会提示 表明sys 1 RuntimeWarning coroutine was never awaited imp