我试着每分钟通过一个API收集协作的数据,为此我使用了一个暂停60秒的循环,实际上所有这些都有效,但我有一些问题。在
例如,当我在12:00
发送请求时,它接收11:59
的数据,但我想接收{time.sleep()
并且延迟时间与我在time.sleep()
函数内的秒数成正比
这是我的代码:
from iqoptionapi.api import IQOptionAPI
from datetime import datetime
import time
candles = None
contador = 1
while True:
if candles is None:
api = IQOptionAPI("iqoption.com", "user", "pass") # Data for conection
api.connect()
api.getcandles(1,1) # (id_active, time)
candles = api.candles.candles_data # List with candles
print ("Try....\n")
else:
print ("Candle petition:", contador, "-", datetime.now(), "\n")
api.getcandles(1, 1)
candles = api.candles.candles_data
print (candles, "\n")
print ("First list:", datetime.fromtimestamp(candles[0][0]),
"Second list:", datetime.fromtimestamp(candles[1][0]), "\n")
contador += 1
time.sleep(60)
以下是我的结果:
^{pr2}$发生什么事了?为什么要耽搁?在
看起来IQOptionAPI使用了websocket-client,这是异步的。发送请求将立即返回,无需等待服务器的响应。您正在检查是否收到响应。因此,您得到的实际上是前一个请求的结果。这就是为什么它对应于您使用的
sleep
的长度。在在IQOptionAPI中,我没有看到一种方法可以在响应到来时发出同步请求或获得任何形式的反馈,但是最好仔细观察一下,看看是否真的有这样的方法。作为解决方法,请尝试在请求和检查响应之间插入几秒钟的延迟:
相关问题 更多 >
编程相关推荐