Python 等待 10 秒时显示星号的脚本

Python script for showing an asterisk while waiting 10 seconds

我正在尝试使用 python AGI 脚本在星号中拨打电话 'on hold',该功能将检查此人是否可用,如果他在星号上,则将拨通此人不是脚本应该等待 10 秒,然后再次检查可用性并在该人可用时拨号。但是我 运行 遇到了一个小问题,使用 time.sleep(10) 函数在一个人不可用时挂断电话,我希望这是因为脚本运行的线程将休眠并且 asterisk 认为脚本是完成 运行 并挂断电话。删除 time.sleep() 给了我我想要的没有时间间隔的东西。

agi = AGI()
agi.verbose("python agi started")
place_call_on_hold("SIP/6001")

def place_call_on_hold(s):
  agi.verbose("entered place_call_on_hold function")
  while True:
    status = agi.get_variable('DEVICE_STATE(%(redirect)s)'%{'redirect':s})
    agi.verbose(status)
    if status == 'NOT_INUSE':
      agi.verbose("Info: place_call_on_hold: calling the number")
      agi.appexec("Dial",s)
    else:
      agi.verbose("Info: place_call_on_hold: sleeping for 10 sec")
      time.sleep(10)

有没有办法在不使用 sleep() 功能的情况下等待 10 秒,或者如何确保通话不会在 time.sleep 唤醒之前结束?

为什么不试试像这样的条件前后的时间差

import time

start = time.time()
end = time.time()

while (end-start) < 10:
    end = time.time()
print(start, end, end-start)

我通过调用 Asterisk Wait(10) 函数而不是 time.sleep(10) 来解决我的问题。