GAE开发小结

上周花了3个晚上用Google App Engine捣鼓了一个自动给自己的微博帐号发送英语单词的site,记录一些要点如下。

总的来说只要看appengine的文档就可以搞出来一个,用python的开发包写起来很方便,mac下也有app develop的客户端(不过有时候可能还是需要进terminal敲命令)。

  • app.yaml的配置文件中可以直接配置url的访问权限,这点很方便,例如:
    – url: /tasks/.*
    script: app/main.py
    login: admin
    – url: .*
    script: app/main.py
    login: admin

    这样就配置了这两个url访问时需要google帐号登录先。

  • 模板语法基于django
  • ORM模型也与django类似,我用到的几个数据类型有db.StringProperty,UserProperty,IntegerProperty
  • 可以将自己准备好的csv格式的文件load进数据库,命令如下:
    appcfg.py upload_data –config_file=models/loaders.py –filename=data/a.csv –kind=Words –url=http://localhost:8080/remote_api ./
  • 在app.yaml中配置静态文件路径:
    handlers:
    – url: /static
    static_dir: static
  • 和数据库交互时可以用Query,也可以用GqlQuery,Query的格式如下:
    models.Words.all().filter(“user =”, user).fetch(10)
    注意上面的filter中引号中的条件,user和=之间必须要有空格,否则就不起作用了。后面的可以用fetch(表示取一个列表,参数是limit,offset,最多取1000个),也可以用get,表示取一个对象(非列表)
    GqlQuery的格式如下:
    db.GqlQuery(“select * from Words where user=:1”, user).fetch(10)
    可以看出和平常的mysqldb查询类似
  • index.yaml 用来定义数据库表的索引键
  • cron.yaml 用来定义cron job,格式如下:
    cron:
    – description: 30 minutes send tweets job
    url: /tasks/sometask
    schedule: every 30 minutes

    cron.yaml跑cron job的方式是服务器按照cron配置中的时间去访问配置中设定的url,这种cron就相当于每个一段时间去访问制定的url,要做的事情就都放到url里完成。我觉得以这种http的方式,局限就是不能在cron中做很多计算统计的工作,因为如果计算太耗时,可能导致一个http请求超时了,这样cron job就完不成了。

– [EOF] –

1 comment:

  1. dofine

    初学 python,也正想写这么发单词的一个小机器人呢,可现在一点思路都没有~~
    Google 搜啊搜就找到这里来了~

Leave a Reply

Your email address will not be published. Required fields are marked *