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

Google App Engine 文件代码备份

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

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

分享给朋友:

相关文章

加入博客聚合,让更多人看到你的博客

博客聚合,博客圈大概是今年年初到现在很火的一个话题。加入这种聚合站有两个优势:1.让更多的人有机会看到你的博客2.让你的链接更多的被搜索引擎抓到 前博客原创qianblogger.com365bloglink是我推荐的比较好的一个聚合站。把自己的博客提交给365bloglink之后,你的文章就会出现在365bloglink首页上面,这样可以让更多的人看到你的博客。365bloglink的注册过程简...

Zblog加入Google广告经典方法介绍

1.首页侧边栏添加方法打开 \TEMPLATE\default.html,找到下述代码:<div class="function" id="divCatalog"> <h3><#ZC_MSG026#></h3> <ul> <#CACHE_INCLUDE_CATALOG#> </ul...

Web2.0设计生成工具

Web2.0设计生成工具Stripe Designer  Web 2.0 Logo Creator...

PostRank:带评分的RSS工具

“天涯海阁”改版之后,在首页用很多篇幅作了热文版块(历史热文、当日热文、Digg热文),正是希望有很好的导读性,也希望添加更多的交互元素。这些功能我们都是通过Wordpress 插件实现,但这些也许在一定程度上影响一些后台运行的速度。如果你对热文功能不高,只需要简单的评分,完全可以通过PostRank 实现。你只需要简单的输入和设置,就可以得到带有评分的RSS Widget...

恋吧推荐一款整合主流社区/论坛系统的Web即时聊天工具Ntalker

Ntalker 是一款为站长朋友量身定制的Web IM软件,它能够轻松的整合至各自论坛、社区等系统中。Ntalker 是一款独立的Web IM 软件,它为独立的站长朋友提供了全方位的Web即时沟通的解决方案,包括,一对一聊天工具、类 Facebook Chat Panel 工具栏以及Web视频聊天室等产品。使用它,用户能够很轻松地将Ntalker 整合到包括,Discuz!、PHPWind、UCe...

恋吧推荐—最好的wordpress搜索引擎插件

SEO也许是让人们发现你的优秀文章的最简单和快捷的方法,对于博客而言尤其是这样。搜索引擎喜欢博客,对于wordpress博客平台而言,你不需要具备一些基本的SEO技能,wordpress对搜索引擎非常友好,它天生就是为不懂 SEO的bloggers而设计的。本文不是为那些搜索引擎优化专家准备的,如果你拥有自己的博客,你只希望专心的投入到博客的文章创新和写作中去,又不想在搜索引擎优化上面耗费你宝贵的...

发表评论

访客

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