首页 文章
  • 0 votes
     answers
     views

    在单个线程中使用带有Python的阻塞http库的并发http请求

    所以我有这个问题,我试图以一种特殊的方式解决,但我不确定它有多难实现 . 我想使用Python 3.4的asyncio / coroutines功能来触发许多并发的http请求,使用阻塞的http库,比如请求,或任何执行http请求的Python api,如boto for aws . 我知道run_in_executor()方法在线程/进程中运行任务,但我想避免这种情况 . 我想在单线程中使用L...
  • 3 votes
     answers
     views

    使用asyncio时,重新引发的异常的跟踪长度会增加

    我有这种情况,其中协同程序依赖于其他协同程序 . 如果在给定的依赖关系中发生异常,则所有依赖项应该停止并记录回溯 . 但是,由于重新引发了异常,因此回溯越来越长 . # coding: utf-8 import asyncio import traceback async def resource(): return 7 / 0 async def worker(dependency...
  • 1 votes
     answers
     views

    asyncio - 不止一次等待coroutine(定期任务)

    我正在尝试为asyncio事件循环创建一个周期性任务,如下所示,但是我得到一个"RuntimeError: cannot reuse already awaited coroutine"异常 . 显然,asyncio不允许等待this bug thread中讨论的相同的等待功能 . 这就是我尝试实现它的方式: import asyncio class AsyncEve...
  • 1 votes
     answers
     views

    Asyncio如何使用run_forever?

    我想做的事: 有一个asyncio事件循环,可以旋转 该循环被传递给我的系统中的各个类,用于调度协同程序 该循环也用于处理对事件的响应(即,我有一个队列,一些事件处理代码将在该队列上放置一个项目,以及单独的协同例程等待该队列上的get()来处理这些值) 有一个主线程"owns"循环并负责创建循环,并且在系统关闭时将取消循环上的任何正在运行的任务并关闭并停止循环(...
  • 0 votes
     answers
     views

    无法退出异步进程

    我从异步进程退出时出现问题,该进程由asyncio处理 . 这是ftp服务器客户端项目,我想在' exit '命令后终止客户端进程 . 这段代码中最重要的部分是: class FtpCommandsReceiver: def __init__(self, loop, sock): self.loop = loop self.sock = sock ...
  • 0 votes
     answers
     views

    使用asyncio将多个用户登录到服务器

    我有一台服务器,我需要登录许多用户 . 在每次登录期间,服务器必须做很多事情,例如向其他服务器/数据库发出请求并等待它们 . 因此,当一个用户登录时,我希望其他用户也开始登录 . 我试图弄清楚asyncio模块是如何工作的,但是没有找到任何代码来完成我想要它做的事情 . 注意:我使用的是python 3.6,因此一些asyncio功能与3.7不同 . import asyncio import r...
  • 1 votes
     answers
     views

    基于asyncio的库应该为关键错误处理提供什么API?

    我正在使用 asyncio 编写一个库 . 在某些情况下,它会检测到电路错误并且无法继续 . 这不是一个错误,问题有外部原因 . 常规库代码会引发异常 . 程序将默认终止,但调用者也有机会捕获异常并执行清理或某种重置 . 这就是我想要的,但遗憾的是异常在asyncio中不起作用 . 更多关于:https://docs.python.org/3/library/asyncio-dev.html#de...
  • 24 votes
     answers
     views

    从流中产生的正确方法是什么?

    我有一个 Connection 对象,用于包含 asyncio 连接的读写流: class Connection(object): def __init__(self, stream_in, stream_out): object.__init__(self) self.__in = stream_in self.__out = stre...
  • 10 votes
     answers
     views

    aiohttp - 异常忽略的消息

    我正在运行以下代码,通过aiohttp发出5个请求: import aiohttp import asyncio def fetch_page(url, idx): try: url = 'http://google.com' response = yield from aiohttp.request('GET', url) print(...
  • 1 votes
     answers
     views

    aiohttp - 多个websockets,单个会话?

    我对图书馆越来越熟悉,但我对以下情况感到困惑: 我希望不断处理来自两个不同网站的websockets的更新消息 . 但是,由于aiohttp.ClientSession()对象应存在于协同程序中,因此我无法使用单个会话变量实现此目的 . import asyncio import aiohttp url1 = 'wss://example.com' async def main(): ...
  • 0 votes
     answers
     views

    如何重置/清除aiohttp会话

    我一直在用aiohttp和反连接代理进行一些测试(每个请求的IP更改) . 使用反向连接代理的最大问题是,有时候你没有得到一个好的代理 . 无论如何,无论如何,我仍然需要通过该特定URL的请求 . 我创建了一个请求http://ip4.me 10,000次并检索IP地址的示例 . 一切都在一开始就有效,但最终,它开始出现错误: 赋值前引用的局部变量'ip' 出现此错误的原因是因为我在请求后获得...
  • 1 votes
     answers
     views

    Python Async Function中的多个Await

    我在自定义类中使用aiohttp会话和信号量: async def get_url(self, url): async with self.semaphore: async with self.session.get(url) as response: try: text_response = await respo...
  • 0 votes
     answers
     views

    保持aiohttp会话活着

    我试图通过并行和单独的会话每X秒访问一个网站,然后分析响应中的内容,看看每个会话是否应该继续 . 但是,一旦代码到达第二个循环,它就会失败 . import asyncio from aiohttp import ClientSession import logging import time interval = 30 instances = 2 visit_url = 'http://www...
  • 3 votes
     answers
     views

    如何管理单个aiohttp.ClientSession?

    作为一个学习练习,我正在尝试修改aiohttp的快速入门示例以使用单个ClientSession获取多个URL(文档建议通常应为每个应用程序创建一个ClientSession) . import aiohttp import asyncio async def fetch(session, url): async with session.get(url) as response: ...
  • 0 votes
     answers
     views

    线程时asyncio aiohttp错误

    我有一个为我编写的脚本,我无法执行它...我收到以下错误... 回溯(最近的呼叫最后): 文件“crawler.py”,第56行,在loop.run_until_complete(future)文件“C:\ Users \ lisa \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ asyncio \ base_events....
  • 2 votes
     answers
     views

    Python 3.5.1 - Asyncio - 检查套接字客户端是否已断开连接

    我正在使用客户端/服务器套接字处理Python脚本 . 在寻找替代解决方案后,我不确定我的解决方案是正确的还是最好的 . 我看过这些帖子: Python handling socket.error: [Errno 104] Connection reset by peer Asyncio detecting disconnect hangs 他们的解决方案对我不起作用,但我有以下内容 . 我不确定...
  • 2 votes
     answers
     views

    不确定如何取消长时间运行的asyncio任务

    我正在开发一个与Web服务交互的CLI . 运行时,它将尝试与之 Build 通信,发送请求,接收和处理回复,然后终止 . 我在代码的各个部分使用协同程序和asyncio来驱动它们 . 我想要的是能够执行所有这些步骤,然后让所有协同程序在最后彻底终止(即以不会导致asyncio抱怨的方式) . 不幸的是,我发现asyncio比C#等其他语言的异步性更难以使用和理解 . 我定义了一个类,它通过web...
  • 7 votes
     answers
     views

    将同步请求包装到asyncio(async / await)?

    我在Python 3.6中编写了一个工具,它将请求发送到多个API(带有各种 endpoints ),并收集它们的解析来解析并将它们保存在数据库中 . 我使用的API客户端具有请求URL的 synchronous 版本,例如他们使用的 urllib.request.Request('... 或者他们使用Kenneth Reitz' Requests 库 . 由于我的API调用依赖于请求URL的同步...
  • 4 votes
     answers
     views

    根据是否再次调用协同程序中的条件?

    我试图将这个关键的“去抖动”逻辑从Javascript转换为Python . function handle_key(key) { if (this.state == null) { this.state = '' } this.state += key clearTimeout(this.timeout) this.timeout = se...
  • 5 votes
     answers
     views

    如何在协同链接期间将控制权交还给事件循环?

    我正在尝试使用Python 3.6中的asyncio,并且很难弄清楚为什么这段代码的行为方式如此 . Example code: import asyncio async def compute_sum(x, y): print("Compute %s + %s ..." % (x, y)) await asyncio.sleep(5) print(&...
  • 4 votes
     answers
     views

    异步def和调用堆栈

    在Python 3.6中使用asyncio时,如果callstack中的一个函数是异步的,我是否需要使整个堆栈异步并等待每次调用?例如我有: class FileDataSource: def getData(self): return pd.read_csv('/some/file') class SocketDataSource: def __init...
  • 16 votes
     answers
     views

    使用asyncio的多个循环

    是否可以使用asyncio进行多个循环?如果回答是肯定的,我该怎么做?我的用例是:我从异步中的网站列表中提取网址对于每个“子网址列表”,我会在异步/抓取它们 提取网址的示例: import asyncio import aiohttp from suburls import extractsuburls @asyncio.coroutine def extracturls(url): s...
  • 18 votes
     answers
     views

    如何将coroutine添加到正在运行的asyncio循环?

    如何为正在运行的asyncio循环添加新的协同程序? IE浏览器 . 一个已经执行了一套协同程序的程序 . 我想作为一种解决方法,可以等待现有协程完成,然后初始化一个新循环(使用附加协程) . 但有更好的方法吗?
  • 5 votes
     answers
     views

    ASYNCIO . 动态添加协程到循环

    我正在编写应用程序,它每秒扫描目录,检查新文件,如果它们出现 - 通过POST请求发送它们并执行存档 . 假设可以出现在目录中的文件数量可以从10到100 - 我决定使用asyncio和aiohttp来同时发送请求 . 码: import os import aiohttp from aiohttp.client import ClientSession BASE_DIR = '/path/t...
  • 16 votes
     answers
     views

    通过参数或使用默认的asyncio循环传递asyncio循环

    我对于将事件循环作为参数传递感到困惑 . 使用事件循环编写函数/方法时有三种可能性: 将asyncio事件循环作为参数传递 不要为事件循环使用参数并使用 asyncio.get_event_loop() 使其可选,将事件循环作为参数传递 . 如果未通过,请使用 asyncio.get_event_loop() 似乎最后一种情况大部分时间都在使用,但即使在asyncio api中,使...
  • 0 votes
     answers
     views

    Python asyncio - 使用asyncio.Event()阻止消费者

    我有一个程序有一个 生产环境 者和两个 slow 消费者,我想用协同程序重写它,以便每个消费者将处理为它生成的 only last value (即跳过处理旧的生成的新值)(我使用了线程和 threading.Queue() 但是在 put() 上有块,导致队列大部分时间都是满的 . 阅读answer to this question后,我决定使用 asyncio.Event 和 asyncio....
  • 2 votes
     answers
     views

    Python asyncio,可以等待/产生整个myFunction()

    我编写了一个对象库,其中很多都是HTTP / IO调用 . 由于不断增加的开销,我一直在考虑转移到asyncio,但我不想重写底层代码 . 我一直希望在我的代码中包含asyncio,以便异步执行函数,而不用await / yield替换所有深度/低级代码 . 我开始尝试以下方法: async def my_function1(some_object, some_params): #Lo...
  • 17 votes
     answers
     views

    Asyncio事件循环已关闭

    尝试运行docs中给出的asyncio hello world代码示例时: import asyncio async def hello_world(): print("Hello World!") loop = asyncio.get_event_loop() # Blocking call which returns when the hello_world()...
  • 3 votes
     answers
     views

    如何在另一个asyncio循环中使用asyncio循环

    我一直在尝试各种各样的事情,以便能够在另一个asyncio循环中使用asyncio循环 . 大多数情况下,我的测试只是以错误结束,例如: RuntimeError:此事件循环已在运行 我下面的示例代码只是我开始的基础测试,所以你可以看到我想要做的基础知识 . 在这次测试之后我尝试了很多东西,这太混乱了,所以我想在寻求帮助时我应该保持简单 . 如果有人能指出我正确的方向,那将是伟大的 . 感谢您...
  • 0 votes
     answers
     views

    aiohttp:从正在运行的web调用asyncio . 应用程序:RuntimeError:此事件循环已在运行

    我正在尝试从我的服务中进行API调用,并且我遇到了事件循环问题 . 有人能帮我理解我做错了吗? 基本上我想创建一个服务,根据从不同服务中提取的数据进行一些计算 . 我可以从cli调用下面的代码,但是当我启动一个Web应用程序(即)点击http://127.0.0.1:8080/add时 loop = asyncio.get_event_loop() data = loop.run_until_co...

热门问题