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

Google App Engine 文件代码备份

admin15年前 (2009-10-19)网站制作282

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

分享给朋友:

相关文章

戳穿网赚虚假广告以及防骗技巧

        骗术拆解: 目前骗子广告联盟非常多,像王鑫这样被骗的案例也不在少数。价高、挂马、拒付、扣量、K号、支付周期短等手段是骗子广告联盟常用的手段,本案例中,涉及了价高、挂马、拒付、扣量、支付周期短等骗术,该联盟提供的图片类广告、文字类广告、弹窗类广告比同类正规的广告联盟高(一般10元/千IP)。    &nb...

2009 Web 设计风潮—单页布局

单页布局单页布局是使用一个单一的页面展示站点的全部内容,这并不意味着站点内容少,这个页可能很复杂,包含了大量图形和动画效果,加载的时间也会有些长。比如,用户点击导航菜单后,该栏目下的新内容会在旧内容处通过渐入渐出,滑入滑出等动画效果显示出来,而页面其它部分始终保持不变。(白宫的最新网站的首页就有这个意思 - 译者)...

z-blog 显示评论者的网站链接

在 Z-BLOG 的博客中,有一些模板默认是不显示评论者的网站地址链接的,这样我们要回访起来就比较麻烦。那么我们自己动手修改模板,让它显示链接地址。在修改模板之前,我们先来了解一下相关的文件及数据。1、b_article_comment.html  每条评论内容显示模板;        2、<#article/c...

WebApp网站列表:适合于网站/Blog的在线聊天服务

这里总结的在线聊天服务是一类适合于网站/Blog方便读者直接在线交流,或者直接通过IM等工具和在线读者交流的服务。1.Geesee属于一个在线聊天室,提供blog或网站嵌入功能,也提供外链的聊天室,界面很漂亮,支持中文。简单注册之后就可以开始建立自己的聊天室。你可以定制你的聊天室(内嵌如网页的尺寸),操作步骤很简单。详细介绍。2.Hab.la:加入一段简单的Javascript代码,可以使你和访问...

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

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

恋吧谈web2.0—SocialGo,创建你的社会化网络

现在貌似SNS挺火的,好多Blog都在讨论SNS,SNS网站也是做的很火热,从Facebook,Myspace,到国内蜂拥而来的数都数不过来的SNS网站们,开心网依靠SNS加上几个小游戏捕获N多白领的心,还有康盛创想的Ucenter让你自己轻松也能搞个SNS网站。貌似不搞点SNS就有点落伍了,今天站长时髦一点,来介绍一个可以自己创建SNS网站的服务SocialGo是一个提供创建社会化网络服务的网站...

发表评论

访客

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