云函数 现在很火的东东

概念:云函数即在云端(服务器端)运行的函数。在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源;各云函数完全独立;可分别部署在不同的地区。开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。

就是可以用云函数直接写后台接口然后发布就可以用了。

用腾讯sfc(云函数)来实践一下。那么问题来了,既然是做的后台,那么数据存哪呢,云数据库?当然不行,你可以看下云数据库有多贵,小成本的根本负担不起。

那么有其他解决的方法吗?

有:腾讯CSF(文件存储)加sqllite数据库。SFC挂在CFS,就可以像本地一样,访问文件。然后创建一个sqlite 就可以,用python对这个数据库增删改查了。

下面直接撸一遍。

1、当然是创建腾讯云的账号,我是微信扫码登陆的。

2、SFC创建云函数。

云函数有两个,一个Event函数,另一个是Web函数。

event函数,不能直接web调用,需要在配置api网关,才能web调用。

web函数,创建后可以直接web调用,api网关直接配置。

下图:选模版创建,筛选web 和hello,根据自己的语言能选择模版,我选择的是python模版。创建面板参数可以不用管,直接完成即可。

免费云函数 python_json

完成后看代码页面:差不多是这种,直接是跟返回的“Hello world” 好的,我们可以调用我们的云函数了。

免费云函数 python_json_02

在触发管理页面,有个访问路径复制到浏览器访问,或者直接点击url跳转访问。可以看到访问结果。

免费云函数 python_sql_03

2、私有网络VPC

简单的说就是,腾讯云的不同产品之间是隔离的,SFC 使用CSF存储的文件,怎么用?不像本地程序天然可以访问本地的资源,只要路径,权限就好。但是他们之间是隔离的,怎么联通呢,这就是vpc的作用了。

腾讯云 云产品列表中选择私有网络,然后新建。填下下面几个信息就完成了。

免费云函数 python_json_04

3、CFS文件存储

免费云函数 python_sql_05

免费云函数 python_免费云函数 python_06

  

免费云函数 python_sql_07

创建==>选择文件系统==>选择vpc==>完成。

注意费用:存储量不大情况下还是可以接受的。

4、云函数 挂载 文件系统。

然后在云函数中 “函数管理”==》配置,在网络配置合文件系统中 选择之前的 vpc 和文件系统。

免费云函数 python_免费云函数 python_08

 

5、 sqlite

直接上代码吧,到此一个后台的增删改查基本可以完成。

from flask import Flask,jsonify,request
import sqlite3
import json
import os

dbfilename = '/mnt/sqllitedb.db'

conn = sqlite3.connect(dbfilename,check_same_thread=False)

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World'

@app.route('/db')
def dbtest():
    return jsonify({"code":os.path.exists(dbfilename)}) 

@app.route('/createTable')
def createTable():
    cursor = conn.cursor()
    sql = "create table IF NOT EXISTS login (id varchar(20) primary key, name varchar(30), password varchar(30))"
    cursor.execute(sql)
    cursor.close()
    conn.commit()
    return jsonify({"code":200})

@app.route('/getalltablename')
def getalltablename():
    cursor = conn.cursor()
    sql = "select name from sqlite_master where type='table' order by name"
    cursor.execute(sql)
    values = cursor.fetchall()
    cursor.close()
    return jsonify({"code":200,"tablenames":values})

@app.route('/addUser', methods=['POST'])
def addUser():
    print("post body:" ,request.get_json())
    _name = request.get_json()["name"]
    _password = request.get_json()["password"]
    
    cursor = conn.cursor()
    sql = "insert into login (name, password) values (?, ?)"
    cursor.execute(sql,(_name,_password))
    cursor.close()
    conn.commit()
    return jsonify({"code":200})

@app.route('/getAllUser')
def getAllUser():
    cursor = conn.cursor()
    sql = "select * from login"
    cursor.execute(sql)
    values = cursor.fetchall()
    cursor.close()
    return jsonify({"code":200,"users":values})

if __name__ == '__main__':
   app.run(host='0.0.0.0',port=9000)