我是aiohttp的新手,只是在测试它的某些功能。因此,我创建了一个简单的客户端和服务器脚本,以查看异步代码可以处理多少个请求,但是我遇到了错误。
服务器脚本如下:
from aiohttp import web
# Initialize counter
counter = 1
# View index function
async def index(request):
# Increments counter
global counter
counter += 1
# Return data
data = {'test': counter}
return web.json_response(data)
# Creating application
app = web.Application()
# Registering route
app.router.add_get('/', index)
# Starting server
web.run_app(app, host='127.0.0.1', port=8080)
Run Code Online (Sandbox Code Playgroud)
客户端脚本如下:
import asyncio, time, aiohttp
from aiohttp import ClientSession
# Initialize counter
COUNT = 0
requests = 2
async def fetch(url, session):
async with session.get(url) as response: …Run Code Online (Sandbox Code Playgroud) 我一直在使用 asyncio 进行并发,但是遇到了问题。我需要使用 asyncio 安排一个任务,但它是阻塞的,所以我想使用并发.futures 中的线程池在执行器中执行它。
我见过这样的例子,安排任务:
now = loop.time()
loop.call_at(now + 60, callback, arg, loop)
Run Code Online (Sandbox Code Playgroud)
像这样在执行器中运行任务:
blocking_tasks = [
loop.run_in_executor(executor, blocks)
for i in range(6)
]
completed, pending = await asyncio.wait(blocking_tasks)
Run Code Online (Sandbox Code Playgroud)
但是如何安排阻塞任务在执行器中运行呢?
我正在开发一个 python 项目,该项目具有许多可能不会定期维护的开源依赖项。我尝试通过使用 Git 添加包来将包用作子模块;但是当我尝试使用子模块时,我收到一条错误消息,说我想要的模块不可用;当我用 pip 安装包时,它工作正常。并非每个包裹都发生这种情况。我想知道为什么我不能像使用已安装的包那样简单地通过导入来使用子模块?
(子模块导入与 pip 包安装导入中似乎缺少模块。)
但是,将这些包用作子模块还是将所需的包和版本号添加到要安装用于生产部署的 requirements.txt 文件中更好?
(子模块或包所需的任何附加功能都使用包装器添加)