![](/img/trans.png)
[英]activate keylogger with the press of a key and have it running for a set amount of time
[英]Key error after running python json for set amount of time
我在下面的脚本中使用了加密数据(价格)并将其发送到一个小的led信号,问题是该脚本将运行一会儿,但随后出现关键错误:“ price”停止了该脚本,奇怪的是“价格”每次都有效一段时间。 我现在正在使用cron作业每分钟运行一次脚本,但是我觉得有一种更简单的方法可以执行此操作。 如果遇到错误,是否可以再次运行/重置脚本? 这是在树莓派上,因此我没有任何物理方法来重新启动它,而无需将其重新插入电视,这显然是我所不希望的。 非常感谢您的帮助!
#!/usr/bin/python
import time, json, requests
from pyledsign.minisign import MiniSign
def btc():
btcTick= requests.get('https://api.gdax.com/products/BTC-
usd/ticker') # replace buy with spot_rate, sell etc
return btcTick.json()['price'] # replace amount with currency etc
def ltc():
ltcTick= requests.get('https://api.gdax.com/products/LTC-
usd/ticker') # replace buy with spot_rate, sell etc
return ltcTick.json()['price']
while True:
btcUSD = float(btc())
ltcUSD = float(ltc())
print btcUSD
print ltcUSD
mysign = MiniSign(devicetype='sign')
mysign.queuemsg(data='B: ' + '$' + str(btcUSD) + ' L: ' + '$' +
str(ltcUSD) , effect="snow", speed=5)
mysign.sendqueue(device='/dev/ttyUSB0', packetdelay=5.0);
time.sleep(60)
您的请求中最有可能的是发回了一些看起来不同的数据(或者可能是超时的),因此只需在尝试返回价格之前进行检查即可。
import time
while True:
try:
btcUSD = float(btc())
ltcUSD = float(ltc())
print btcUSD
print ltcUSD
time.sleep(1)
except KeyError as e:
print('Key not found')
如果您想以更花哨的方式处理它,我建议您准确地弄清从请求中返回的内容并从那里返回,因为显然您不会每次都得到相同的消息。 包装try/except
只是一种很好的做法,因此无论您如何获得响应,我都会这样做。
try/except
也可以防止脚本死亡,因此您不必重新启动它。
大胆强调: 我也建议您在while循环中入睡。 对垃圾邮件充斥大量请求的网站通常会使该网站阻止您,因为您基本上已经编写了DoS攻击。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.