python - 使用 Python 和 Asyncio 运行异步函数
问题描述
我刚开始使用 Python 进行 AsyncIO,我制作了一个非常简单的测试脚本来尝试了解它是如何工作的。
这是我尝试过的:
import cfscrape, asyncio, json, time
BU = cfscrape.create_scraper()
async def run(market):
try:
# DATA RETRIEVAL #
URL = "https://api.binance.com/api/v1/klines?&symbol={0}&interval=4h&limit=130".format(market)
ResultRaw = BU.get(URL, timeout=(10, 15)).content
Result = json.loads(ResultRaw)
print(Result)
time.sleep(2)
print('Finished')
except Exception as e:
print(e)
async def main():
Tickers = ['BTCUSDT', 'ETHBTC', 'ETHUSDT']
for market in Tickers:
await run(market)
asyncio.run(main())
该脚本接受三个参数并对 API 端点执行一个简单的查询,然后是 sleep 和 print Finished
。输出将如下所示:
Result
Finished
Result
Finished
Result
Finished
我不明白的是:为什么不是输出:
Result
Result
Result
Finished
Finished
Finished
看起来脚本一个接一个地同步执行功能。相反,我想为每次执行创建一个协程,因此三个请求应该同时(几乎)执行。同样,我是异步 Python 的新手,所以我所说的可能是错误的,但是任何人都可以帮助我理解这一点吗?
解决方案
推荐阅读
- javascript - 没有空间可以容纳时如何在新行中换行
- c# - 如何映射到仅获取目标子对象?
- apache-kafka - Spring Integration 和 Kafka:如何根据消息头过滤消息
- python - keras 中的复值权重初始化
- typescript - TS错误:“找不到名称'T'如何通过泛型?
- reactjs - 在 ReactJs 中渲染组件之前从服务器获取数据
- node.js - 首次部署期间播种参数存储的自动化
- bash - 使用文本文件中的内容复制选定的目录和文件
- linux-kernel - 如何使用 NFS 在 sama5d27-som1-ek 板上安装 Rootfs
- git - 无法从 bitbucket 管道创建拉取请求