自己写了一个简单的脚本,可以在服务器上面将小站的数据库每天做备份,然后可以使用python来通过访问url来保存到本地,今天无聊想起了好久未动过的sae了,想着试试sae的服务来将数据库文件保存到storage中.下面分享给大家过程.首先,你要在sae上面部署python应用.这个我就不说了,Google一下一大堆教程.然后就是部署代码,然后修改index.wsgi文件为下面的代码
import saefrom sae.storage import Bucketimport urllib2 import smtplibimport timefrom email.message import Messageimport email.utilsimport base64correct_time = time.strftime('%m_%d_%H_%M_%S',time.localtime(time.time()))url = "xxxxxxxxxxxxx"这个修改成你的数据库文件的地址def send_email(file_url): smtpserver = 'smtp.gmail.com' #这儿大家都能看懂吧,修改成你自己的. username = 'ooooooo' password = 'xxxxxxxxxx' from_addr = 'ffffffff@gmail.com' to_addr = 'tttttttt@gmail.com' message = Message() message['Subject'] = 'Sql Data Backup' message['From'] = from_addr message['To'] = to_addr message.set_payload('Sql Data Backup OK at '+correct_time + ' url is '+file_url) msg = message.as_string() sm = smtplib.SMTP(smtpserver,port=587,timeout=20) sm.ehlo() sm.starttls() sm.ehlo() sm.login(username, password) sm.sendmail(from_addr, to_addr, msg) sm.quit() def checktest(): bucket = Bucket('sssssss') #修改成你自己的storage名 bucket.put() bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn', metadata={'expires': '1d'}) f = urllib2.urlopen(url) data = f.read() bucket.put_object(correct_time+".sql", data) file_url = bucket.generate_url(correct_time+".sql") return file_urldef app(environ, start_response): status = '200 OK' response_headers = [('Content-type', 'text/html; charset=utf-8')] start_response(status, response_headers) file_url = checktest() send_email(file_url) return ['Welcome to SAE!']application = sae.create_wsgi_app(app)
说明下主要是先获得数据库文件,然后按照日期格式保存,之后保存在storage中,然后通过发送sql文件地址到邮件来提醒.发送邮件在python smtplib和email模块有详细说明.最后修改config.yaml文件,添加下面的代码段
cron:- description: cron_test url: / schedule: "1 1 * * *"
意思就是在每天都1点1分来运行这个任务.好了,就是这么多,其实我也对sae是一窍不通,最近有时间才偶尔看看的.分享出来,希望对大家有所帮助.
转载请注明:逝去日子的博客 » 使用sae的storage服务来自动保存数据库文件
福报不够的人,就会常常听到是非;