本帖最后由 吾爱破jie 于 2019-12-10 19:46 编辑
我用python写了一个用摄像头拍摄照片,并将照片上传到服务器上的功能。每隔一段时间就执行一次。
当我每个一分钟执行一次,他能一直保持后台运行。但是当我设置为一个小时运行一次的时候,程序就运行了第一次,后面就不运行了,因为我设置的是开机自启自动运行,所有没有返回任何信息,不知道怎么回事。
代码特别简单,请问在哪里可以改进一下。
[Python] 纯文本查看 复制代码 #-*-coding:UTF-8-*-
from picamera import PiCamera
import datetime,time,paramiko,pymysql,os
time.sleep(60) # waiting for network connection
# host是阿里云服务器ip地址,port是阿里云中数据库的端口号,user和passwd是经阿里云MySQL授权过的可远程连接的帐号和密码,db是数据库
# 若加了charset='utf8',则最上方要加上#-*-coding:UTF-8-*-
conn = pymysql.connect(host = '',port = ,user = '',passwd = '',db = '',charset='utf8')
cur = conn.cursor()
# 连接阿里云服务器的一般操作
transport = paramiko.Transport(('',22))
transport.connect(username='',password='')
sftp = paramiko.SFTPClient.from_transport(transport)
camera = PiCamera()
img_cycle = 3600 #定义图像周期
# 拍摄图片,并用当前时间命名存储到指定位置
def get_img(now):
camera.capture('/home/pi/Pictures/%s.jpg' %now)
# 上传图像
def upload_img(now):
sftp.put('/home/pi/Pictures/%s.jpg' %now,'/root/images/%s.jpg' %now)
# 删除图像
def delete_img(now):
os.remove('/home/pi/Pictures/%s.jpg' %now)
# 上传图片路径到阿里数据库
def img_mysql(now):
ali_directory = str('/root/images/%s.jpg' %now)
sql = "INSERT INTO images(images_directory,submission_date) VALUES('"+ali_directory+"',now())"
cur.execute(sql)
conn.commit()
# 录制视频
def get_videos(now):
camera.start_recording('/home/pi/Videos/%s.h264' %now)
time.sleep(10)
camera.stop_recording()
# 上传视频
def upload_videos(now):
sftp.put('/home/pi/Videos/%s.h264' %now,'/root/videos/%s.h264' %now)
# 删除视频
def delete_videos(now):
os.remove('/home/pi/Videos/%s.h264' %now)
# 上传视频路径到阿里数据库
def videos_mysql(now):
ali_directory = str('/root/videos/%s.h264' %now)
sql = "INSERT INTO videos(videos_directory,submission_date) VALUES('"+ali_directory+"',now())"
cur.execute(sql)
conn.commit()
while 1:
now_img = datetime.datetime.now().strftime('%Y%m%d_%Hh%Mm%Ss') # 获取当前时间
get_img(now_img)
upload_img(now_img)
time.sleep(5) # 延迟五秒,以防崩溃
delete_img(now_img)
img_mysql(now_img)
print('已执行图像')
time.sleep(5)
now_videos = datetime.datetime.now().strftime('%Y%m%d_%Hh%Mm%Ss') # 获取当前时间
get_videos(now_videos)
upload_videos(now_videos)
delete_videos(now_videos)
time.sleep(5) # 延迟五秒,以防崩溃
videos_mysql(now_videos)
print('已执行视频')
time.sleep(img_cycle)
|