Python 收集数据和使用datetime.sleep()时的时间延迟

Python 收集数据和使用datetime.sleep()时的时间延迟,python,python-3.x,delay,Python,Python 3.x,Delay,我试图每分钟通过一个API收集协作数据,为此我使用了一个暂停60秒的循环,实际上所有这些都可以工作,但我有一些问题 例如,当我在12:00发送请愿书时,它会收到11:59的数据,但我希望收到12:00的数据。 这只发生在我使用time.sleep和延迟时,它与我在time.sleep函数中输入的秒数成正比 这是我的代码: from iqoptionapi.api import IQOptionAPI from datetime import datetime import time candl

我试图每分钟通过一个API收集协作数据,为此我使用了一个暂停60秒的循环,实际上所有这些都可以工作,但我有一些问题

例如,当我在12:00发送请愿书时,它会收到11:59的数据,但我希望收到12:00的数据。 这只发生在我使用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)
以下是我的结果:

蜡烛请愿书:2-2017-01-25 10:14:05.554242 [[1485360784, 1073590, 1073600, 1073600, 1073590], [1485360785, 1073600, 1073595, 1073600, 1073595]] 第一个列表:2017-01-25 10:13:04第二个列表:2017-01-25 10:13:05 发生了什么事?为什么会有延迟?

它看起来像是在使用,这是异步的。发送请求将立即返回,无需等待服务器的响应。在收到响应之前,您正在检查响应。因此,您得到的实际上是前一个请求的结果。这就是为什么它与你的睡眠时间相对应

我没有立即在IQOptionAPI中找到一种方法来发出同步请求或在收到响应时获得任何类型的反馈,但最好仔细看看是否确实有这种方法。作为一种解决方法,请尝试在请求和检查响应之间插入几秒钟的延迟:

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

由于时间原因执行暂停的实际时间量。睡眠暂停时间可能小于请求的时间。通过将调用替换为重复调用datetime的循环,您可以更准确地执行此操作。现在,直到至少达到所需的时间量为止,每次调用之间的间隔可能只有几分之一秒。多亏了这一解决方案,现在我可以毫不延迟地实时接收协作