首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当internet连接再次启动时,请做一些事情

当internet连接再次启动时,请做一些事情
EN

Stack Overflow用户
提问于 2015-02-28 17:06:36
回答 2查看 300关注 0票数 0

我想在Python上实现以下概念,但是,我正在试图找出编程的想法。

图像将使用相机拍摄,如果Internet连接可用,则将其上传到FTP服务器上,如果不将图像存储在驱动器上,则将其上传到FTP服务器上。与此同时,继续做其他的事情,但是,当互联网连接再次上升,然后上传它。

这可能是等待上传的图片数量。你认为如何?

我已经编写了代码来拍摄并上传图片,但是如果没有互联网连接将图像上传到ftp服务器上,脚本将返回错误并退出。下面的代码只是我的项目的一部分。我分享了我认为对我想要做的事情有帮助的东西。

代码语言:javascript
复制
def takePicture(self, image_name):
      image_path = '/home/pi/pictures/' + image_name
      interact().ftpSession(image_path, image_name)
      rLink = 'http://www.webpage.com/images/' + image_name
      print rLink
      interact().sendSms("Demo Picture " + rLink)

 def grabPicture(self):
      grab_cam = subprocess.Popen("sudo fswebcam --timestamp '%d-%m-%Y %H:%M:%S (%Z)' -r 640x480 -d /dev/v4l/by-id/usb-OmniVision_Technologies__Inc._USB_Camera-B4.09.24.1-video-index0 -q /home/pi/pictures/%m-%d-%y-%H%M.jpg", shell=True)
      grab_cam.wait()
      todays_date = datetime.datetime.today()
      image_name = todays_date.strftime('%m-%d-%y-%H%M') + '.jpg'
      return image_name

def ftpSession(self, image_path, image_name):
      session = ftplib.FTP('ftp.webpage.com','user','fg78fy87fyg')
      session.cwd('images')                         #Give the rigth folder where to store the image
      print "FTP Connection established"
      file = open(image_path,'rb')                  # file to send
      session.storbinary('STOR ' + image_name, file)     # send the file
      file.close()                                    # close file and FTP
      session.quit()
      link = 'http://www.webpage.com/images/' + image_name
      print "File has been uploaded!"
      return link

def pir():
  prevState = 0
  while True:
    time.sleep(0.1)
    currState=mcp2.input(sensorPin)
    if prevState==0 and currState==128:
      image_name = interact().grabPicture()
      #....#
      status = database().getState()
      #.....#
      if (status == 'True'):
        #Do something
      else:
            if os.path.exists('/home/pi/pictures/'+image_name):
              os.remove('/home/pi/pictures/'+image_name) #Deletes the taken picture in case of False-Alarm
              print 'File', image_name, 'has beeen deleted'

    prevState = currState
    time.sleep(1)

 Process(target=pir).start()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-28 17:10:26

我会使用urllib进行一次简单的检查,查看互联网是否连接:

代码语言:javascript
复制
while True:
    try:
        urllib.urlopen('http://google.com')

        break # exit loop if connected

    except:
        print 'Establish a connection.'

    time.sleep(5) # wait five seconds


print 'Now continue' # outside of loop
票数 2
EN

Stack Overflow用户

发布于 2015-02-28 17:12:36

有一个线程尝试每隔一段时间上传一次图像(例如,每5分钟一次或任何数量似乎适合您的需要),如果由于缺乏internet连接而失败,则继续迭代(使用try/ fit )。

伪码:

代码语言:javascript
复制
import time
while True:
  try:
    upload_file()
  except NoConnectionException:
    time.sleep(300)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28784446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档