我还不完全理解 asyncio 和 aiohttp 是如何工作的。
我正在尝试从 URL 列表中发出一堆异步 api 请求,并将它们保存为变量,以便稍后处理它们。
到目前为止,我正在生成没有问题的列表并设置请求框架。
urls = []
for i in range(0,20):
urls.append('https://api.binance.com/api/v1/klines?symbol={}&interval=
{}&limit={}'.format(pairs_list_pairs[i],time_period,
pull_limit))
import asyncio
import aiohttp
async def request(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
return await resp.text()
async def main():
results = await asyncio.gather(
request(urls[0]),
request(urls[1]),
)
print(len(results))
print(results)
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(main())
loop.run_until_complete(loop.shutdown_asyncgens())
finally:
loop.close()
Run Code Online (Sandbox Code Playgroud)
如果我使用索引手动一一输入我的请求(如下所示),我就可以发出请求。但问题是我的列表中有超过 100 个 api 请求,我不想手动输入这些请求。如何迭代我的列表?另外,如何将结果保存到变量中?当脚本结束时,它不会在任何地方保存“结果”。
async def main():
results = await asyncio.gather(
request(urls[0]),
request(urls[1]),
)
print(len(results))
print(results)
Run Code Online (Sandbox Code Playgroud)
下面是一些复制代码的示例 URL: …
我正在从相对较新的 R 切换到 python。
我正在尝试完成一项非常简单的任务,稍后会变得更加复杂。
我试图按组获取最大值,在本例中组为“符号”,并使用“ClosePrice”列中的最大值创建一个新列。
我正在使用 groupby 和转换:
proccessing_data['Max'] = proccessing_data.groupby('Symbol').transform(lambda x: x.ClosePrice.max(), axis =1)
Run Code Online (Sandbox Code Playgroud)
并返回以下错误:
TypeError: Transform function invalid for data types
Run Code Online (Sandbox Code Playgroud)
我的最终目标实际上是使用转换中的函数:
proccessing_data['RSI'] = proccessing_data.groupby('Symbol').transform(lambda x: talib.RSI(x["ClosePrice"], timeperiod=14), axis =1)
Run Code Online (Sandbox Code Playgroud)
但这会返回相同的错误。
RI使用参考:
proccessing_data$RSI_SMA <- ave(proccessing_data$ClosePrice, proccessing_data$Symbol,
FUN = function(x) RSI(x,n = 14, maType = "SMA"))
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,谢谢!