将照片从raspberry pi上传到s3,不会有任何延迟

时间:2016-05-21 02:10:49

标签: python amazon-s3 camera raspberry-pi motion-detection

我正在编写一个程序来捕捉动作,拍照,睡眠,眨眼等等。到目前为止,这是没有功能的代码,因为那些不是问题。

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秒?我觉得我已经尝试了一切 除了异步,我认为是特定于树莓派

0 个答案:

没有答案