我正在编写一个程序来捕捉动作,拍照,睡眠,眨眼等等。到目前为止,这是没有功能的代码,因为那些不是问题。
try:
starting()
while duration < 3:
previous_state = current_state
current_state = GPIO.input(sensor)
if current_state != previous_state:
new_state = "High" if current_state else "low"
if current_state:
blink_led(5)
pic = '/home/pi/pic%s.jpg' % num
num += 1
camera.capture(pic)
data = open(pic, 'rb')
s3.Bucket('bucket').put_object(Key=pic, Body=data)
sleep(5)
duration += 1
这里的问题是我想让它睡5秒钟,但如果上传需要一段时间,那么基本上睡眠时间超过5秒。取决于我的互联网连接。我试过了
while s3.Bucket('bucket').put_object(Key=pic, Body=data):
sleep(5)
duration += 1
然后它陷入无限循环,如果我在最后做一个if子句,如:
if duration == 3:
s3.Bucket('bucket').put_object(Key=pic, Body=data)
它只会上传最后一张照片。 我也试过最后做的事情:
if duration == 3:
s3.Bucket('bucket').put_object(Key='/home/pi/pic1.jpg', Body=data)
s3.Bucket('bucket').put_object(Key='/home/pi/pic2.jpg', Body=data)
s3.Bucket('bucket').put_object(Key='/home/pi/pic3.jpg', Body=data)
它只能上传第一个然后挂断。我应该如何将上传作为后台进程编写,以使其睡眠时间不超过5秒?我觉得我已经尝试了一切 除了异步,我认为是特定于树莓派