标签归档:sae

RSS feed of sae

使用SAE实时日志API统计IP来访次数

托管至SAE的应用,有时会出现访问流量异常增长的情形。

此时,我们需要对流量异常日期对应的应用访问日志进行分析,从而排查流量异常增长的原因。

一个简单有效的方式就是对访客IP进行统计,因为流量异常很可能是由于少数几个IP在短时间内的大量访问造成的(当然也不排除DDoS攻击)。

要获取SAE的访问日志,可以从SAE的日志面板手工下载,也可以使用SAE的实时日志API,参阅博文:SAE实时日志API Python使用小记

由于我们只需要使用日志的IP字段,通过SAE实时日志API中fop参数的fields命令可以移除多余的日志字段,从而节省下载流量造成的云豆消耗。

通过下面的Python代码即可实现特定日期的访客IP统计。

在工作目录下创建sae_log_util.py,apibus_handler.py,ip_counter.py并拷贝相应代码,执行ip_counter.py即可。

sae_log_util.py:

#-*-coding: utf8 -*-

#sae_log_util.py
#sae log utility based on sae apibus_handler
#author blog: https://bookshadow.com
#src date: 2015-09-17

status_code_dict = {200 : 'OK', 206 : 'Partial Content', 400 : 'Bad ...

继续阅读

新浪云Git代码仓库使用入门

SAE近期的优化,目前已经支持Git,本文将介绍如何使用Git在SAE上部署代码。

使用Git进行代码管理,首先要在本地安装Git客户端,下载链接:http://www.git-scm.com/download/

Git客户端的安装与配置过程在此略去不讲,谷歌一下可以找到许多相关的内容,文章重点介绍如何使用Git在SAE上部署代码。

本文例子中使用的操作系统为Windows 8.1,应用语言为Python,应用名称为gitsrc。

0. 代码管理方式的选择

在首次对应用进行代码管理时,有且仅有一次选择代码库管理方式的机会,这里我们选择Git。

此后应用的代码管理方式将不可变更

创建完成后,可以在页面上看到应用的Git仓库地址:https://git.sinaapp.com/gitsrc/ 

1. 使用git clone克隆代码仓库

在命令提示符(cmd)下,cd到工作目录(本例为E:\sae),执行命令:

git clone -o sae https://git.sinaapp.com/gitsrc

其中gitsrc应替换为正确的应用名称

按照提示输入安全邮箱和密码,执行成功后,提示检出内容为空。

保存Git用户名和密码:

在%USERPROFILE%\_netrc文件中

添加如下内容,可以避免每次push时重复输入用户名和密码(未启用动态口令)

machine git.sinaapp.com
  login 安全邮箱
  password 密码

添加一个Git远程仓库sae,地址为:https://git.sinaapp.com/gitsrc

git remote add sae https://git.sinaapp.com/gitsrc

注:如果在git clone时添加了 -o sae ...

继续阅读

SAE实时日志API Python使用小记

SAE新近开放的实时日志API允许开发者通过HTTP GET方式从SAE服务器获取应用日志,从而实现在线的应用调试与分析。

API参数介绍:

SAE日志API的URL请求格式为:GET /log/(string: service)/(string: date)/(string: ident).log?(string: fop)

参数列表中:

date表示日志的日期,格式为yyyy-MM-dd

service为SAE提供的各项服务,包括http,taskqueue(任务队列),cron(定时任务),mail(邮件),rdc(关系型数据库集群),storage(存储),push(推送)以及fetchurl(URL抓取),相信熟悉SAE的开发者不会对此感到陌生。

ident表示相应服务下的日志类型,包括access(访问),error(错误),alert(警报),debug(调试),warning(警告)与 notice(通知)。

service与ident的对应关系见下表(摘自SAE日志API文档):

service    ident
http    access、error、alert、debug、warning、notice
taskqueue    error
cron    error
mail    access、error
rdc    error、warning
storage    access
push    access
fetchurl    access

fop(似乎是flow operation的简称),为流式操作参数,支持head,tail,grep等linux下常用的shell命令;并且支持管道,操作之间用竖线分隔 ...

继续阅读

SAE新浪微博Python SDK CERTIFICATE_VERIFY_FAILED解决方法

一个搭建在SAE上的Django应用,使用新浪微博提供的Python SDK已经稳定运行一年有余,但最近开始持续出现微博认证失败的状况。

摘录微博Python SDK的错误提示如下所示:

ERROR:django.request:Internal Server Error: /weibo/auth/
Traceback (most recent call last):
  File "/usr/local/sae/python/3rd/django-1.5/django/core/handlers/base.py", line 115, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/data1/www/htdocs/838/app/1/mysite/views.py", line 42, in auth
    res = weibo_util.keep_user(code,api,redirect_uri)
  File "/data1/www/htdocs/838/app/1/util/weibo_util.py", line 86, in keep_user
    r ...

继续阅读

SAE Django如何禁止外部IP访问

在SAE上基于Django搭建的Web工程有时需要禁止来自某些特定IP地址的访问请求。

例如一个为搭建在SAE的其他项目提供服务的内部工程,可以设置为只允许SAE内部的IP地址访问,从而提高项目的安全性。

要修改SAE Django工程的访问规则,需要变更工程的WSGI配置文件。

通过向WSGI配置文件添加中间件,可以根据客户端请求信息的IP地址、User-Agent,Referer等属性对访问请求进行过滤。

SAE Django工程根目录1/下的index.wsgi的路由配置源码如下:

#Router
import sae
from mysite import wsgi

application = sae.create_wsgi_app(wsgi.application)

1/mysite/wsgi.py源码如下:

#encoding=utf8
"""
WSGI config for mysite project.

This module contains the WSGI application used by Django's development server
and any production WSGI ...

继续阅读