阿里云函数计算python+flask简单示例

#!/usr/bin/env python

# coding=utf-8

from cytopticcloud import create_app

from flask import request

from urllib.parse import urlparse

import logging

def handler(environ, start_response):

    """

    HTTP触发函数入口,会通过调用的函数名称自动导入不同的Blueprint。

    """

    global logger

    logger = logging.getLogger()

    # 解析路径和函数名称

    parsed_tuple = urlparse(environ['fc.request_uri'])

    logger.info("访问路径: {}".format(environ['fc.request_uri']))

    li = parsed_tuple.path.split('/')

    i = 1

    while True:

        if li[i].startswith('20') or li[i] == 'proxy':

            i += 1

        else:

            break

    service_name =  li[i]

    function_name = li[i+1]

    logger.info("服务名称 {}".format(service_name))

    logger.info("函数名称 {}".format(function_name))

    base_path = "/".join(li[0:i+1])

    logger.info(base_path)

    # 通过解析的函数名称导入Blueprint,创建Flask程序。

    app = create_app(base_path, function_name)

    return app(environ, start_response)
# -*- coding: utf-8 -*-

from flask import Flask

from flask_cors import CORS

def create_app(base_path=None, function_name=None):

    """

    创建Flask程序

    """

    app = Flask(__name__)

    app.config['JSON_AS_ASCII'] = False

    app.logger.info("导入Blueprint: {}/{}".format(base_path, function_name))

    if function_name == 'basic':

        from . import basic

        app.register_blueprint(

            basic.bp, url_prefix=base_path + basic.bp.url_prefix)

    else:

        from . import basic

        app.register_blueprint(basic.bp, url_prefix=basic.bp.url_prefix)

    # 上FC时需要注释CORS,否则无法跨域访问

    CORS(app, supports_credentials=True)

    return app
# -*- coding: utf-8 -*-

from flask import Flask

from flask import Blueprint

from flask import jsonify

from flask import request

import datetime

import time

import pytz

import json

import logging

import sys

# basic Blueprint

bp = Blueprint('basic', __name__, url_prefix='/basic')

@bp.route('/', methods=['GET', 'POST'])

def home():

    """

    主页,给出时间版本信息等,用于确定服务状态。

    """

    tz = pytz.timezone('Asia/Shanghai')

    now = datetime.datetime.now(tz)

    return jsonify(

        status = 'ok',

        message = '正常',

        version = '1.0.0')

本地debug可以

set FLASK_APP=main.py

set FLASK_ENV=development

flask run

访问http://127.0.0.1:5000/basic

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容