当前位置:首页 > 网站制作 > 正文内容

Google App Engine 文件代码备份

admin17年前 (2009-10-19)网站制作483

Google App Engine 不支持直接下载代码文件,所以我们无法直接将服务器上的代码进行备份。如果本地的代码一旦丢失,就很难找回,这点对GAE的用户来说,是相当麻烦的。

好在有人编写了一个工具,用于将GAE站点的代码打包成zip格式并下载

步骤如下:

1.在根目录下根据manatlan的代码建立zipme.py

2.在app.yaml中加入

- url: /zipme
script: zipme.py3.访问youapp.appspot.com/zipme

zipme.py脚本

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
##########################################################################
ZipMe : GAE Content Downloader
##########################################################################
Just add this lines in your app.yaml :

- url: /zipme
script: zipme.py

##########################################################################
""" # manatlan

from google.appengine.ext import webapp
from google.appengine.api import users

import wsgiref.handlers
import zipfile
import os,re,sys,stat
from cStringIO import StringIO

def createZip(path):

def walktree (top = ".", depthfirst = True):
names = os.listdir(top)
if not depthfirst:
yield top, names
for name in names:
try:
st = os.lstat(os.path.join(top, name))
except os.error:
continue
if stat.S_ISDIR(st.st_mode):
for (newtop, children) in walktree (os.path.join(top, name),
depthfirst):
yield newtop, children
if depthfirst:
yield top, names

list=[]
for (basepath, children) in walktree(path,False):
for child in children:
f=os.path.join(basepath,child)
if os.path.isfile(f):
f = f.encode(sys.getfilesystemencoding())
list.append( f )

f=StringIO()
file = zipfile.ZipFile(f, "w")
for fname in list:
nfname=os.path.join(os.path.basename(path),fname[len(path)+1:])
file.write(fname, nfname , zipfile.ZIP_DEFLATED)
file.close()

f.seek(0)
return f


class ZipMaker(webapp.RequestHandler):
def get(self):
if users.is_current_user_admin():
folder = os.path.dirname(__file__)
self.response.headers['Content-Type'] = 'application/zip'
self.response.headers['Content-Disposition'] = \
'attachment; filename="%s.zip"' % os.path.basename(folder)
fid=createZip(folder)
while True:
buf=fid.read(2048)
if buf=="": break
self.response.out.write(buf)
fid.close()
else:
self.response.headers['Content-Type'] = 'text/html'
self.response.out.write("<a href=\"%s\">You must be admin</a>." %
users.create_login_url("/zipme"))

def main():
application = webapp.WSGIApplication(
[('/zipme', ZipMaker)],
debug=False)
wsgiref.handlers.CGIHandler().run(application)

if __name__ == "__main__":
main()
这段代码会通过google的身份认证来判断访问者是否可以下载代码,所以不用担心代码泄漏。不过还是希望Google可以提供代码备份和数据库备份的功能。
 

扫描二维码推送至手机访问。

版权声明:本文由博赚恋吧资源站发布,如需转载请注明出处。

本文链接:https://432l.com/post/1511.html

分享给朋友:

相关文章

新手做网站时要关注的10个网站程序

建站程序是站长运营网站的根本。如何选择建站程序,提供适合自己网站会员体系的服务和应用,一直是广大站长朋友比较关心的话题。  NO.1 Discuz!  程序简介:Discuz!是全球范围内用户量最大、覆盖面最广的社区论坛(BBS)产品。作为一套成熟的社区解决方案,Discuz! 的每一次升级都引领着中国互联网的社区化、社交化潮流,经过八年多的发展,Discuz! 所建立的社区技术体系和人机交互模型...

恋吧偶见—FeedJIT:可实时显示访问者来源的Blog Widget

FeedJIT提供的是一个可实时显示访问者来源Blog Widget 服务,与变通的Widget一样,只需在Blog模版中插入一段JS代码就能安装完成。在FeedJIT Widget中可实时显示出访问者从哪里进入到你的Blog,并查看了哪个页面,来自哪个国家及地理位置等信息,功能虽然简单,但还挺实用。效果如右:进入:http://feedjit.com/join/...

4月14日-5月13日Gvod激活码,狗狗日送IP30W

活动介绍: GVOD新版即将上线,本版上线将配合开放部份狗狗流量,为了让更多喜欢并支持GVOD的站长尽快获取狗狗流量,GVOD将通过此次活动为站长开通带量资格。 活动时间: 4月14日-5月13日 活动流程图: 其他说明:所有通过你的参赛邀请码加入GVOD的站长的播放量都将计入到你的成绩,当你自己的播放量+被邀请的站长的播放量只要有一天突破2000的时候,您就拥有了GVOD狗狗带流量资格...

神奇的代码---你绝对想不到浏览器还有这个功能!

浏览器可以浏览网页,可以查看图片、视频,可以保存图片等等功能,但你可能没有想到或没有见到过下面这个功能:访问的页面中包含的图片元素围绕在一起有规律的旋转 !这是如何实现的呢?首先随便打开一个网站,随便一个网站都行!然后复制下面的代码到地址栏中,回车确定,看看发生了什么?下面是代码!javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=....

HDWiki—免费的WIKI建站系统

HDWiki     互动维客开源系统(HDWiki)是一个免费、易用、功能强大的WIKI建站系统。具有以下特点: 可视化编辑器 与discuz的无缝对接 所见即所得的编辑功能,让您无需学习新的编...

国内ASP开源建站系统一览

使用ASP做网站虽然有点落伍,但在中国还是有很大市场的,因为大部分国内用户使用Windows Server服务器,在Windows Server的IIS环境下,ASP+SQLServer的性能丝毫不逊于PHP+MySQL,可惜ASP不支持跨平台,不支持Apache,因此发展受到了很大限制。在开源项目上,国内的ASP开源项目也没有PHP的多,不过也有一些,下面是我总结的一些基于ASP的建站开源系统。...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。