收集数据和使用时的时间延迟日期时间.睡眠()

2024-04-25 04:46:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着每分钟通过一个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}$

发生什么事了?为什么要耽搁?在


Tags: 数据fromimportnoneapidatadatetimetime
1条回答
网友
1楼 · 发布于 2024-04-25 04:46:43

看起来IQOptionAPI使用了websocket-client,这是异步的。发送请求将立即返回,无需等待服务器的响应。您正在检查是否收到响应。因此,您得到的实际上是前一个请求的结果。这就是为什么它对应于您使用的sleep的长度。在

在IQOptionAPI中,我没有看到一种方法可以在响应到来时发出同步请求或获得任何形式的反馈,但是最好仔细观察一下,看看是否真的有这样的方法。作为解决方法,请尝试在请求和检查响应之间插入几秒钟的延迟:

api.getcandles(1, 1)
time.sleep(2)
candles = api.candles.candles_data

相关问题 更多 >