python开发webservice


# coding:utf-8

import requests
import json
import argparse

# 获取实例
def get_instance():
    url = 'https://api.vultr.com/v2/instances'
    r = requests.get(url, headers=headers)
    return r.text


# 获取所有区域
def get_all_regions():
    url = 'https://api.vultr.com/v2/regions'
    r = requests.get(url, headers=headers)
    return r.text


# 获取所有计划
def get_all_plans():
    url = 'https://api.vultr.com/v2/plans'
    r = requests.get(url, headers=headers)
    return r.text


# 获取所有操作系统
def get_all_os():
    url = 'https://api.vultr.com/v2/os'
    r = requests.get(url, headers=headers)
    return r.text

# 创建实例
def create_instance(country, plan, label, os_id, hostname, tag):
    data = {
        "region": country,
        "plan": plan,
        "label": label,
        "os_id": os_id,
        "user_data": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==",
        "backups": "disabled",
        "hostname": hostname,
        "tag": tag
    }
    url = 'https://api.vultr.com/v2/instances'
    r = requests.post(url, headers=headers, data=json.dumps(data))
    return r.text

# 删除实例
def delete_instance(instances_id):
    url = 'https://api.vultr.com/v2/instances/'
    instances = instances_id
    r = requests.delete(url+instances_id, headers=headers)
    return r.text

parser = argparse.ArgumentParser(description='Create and delete servers',formatter_class = argparse.RawDescriptionHelpFormatter)
hit = '\n---------------------------------------------\n创建时需要填写的参数列表:\n国家:\n\n    洛杉矶(美国)     lax\n    东京(日本)          nrt\n    新加坡(新加坡)        sgp\n    马德里(西班牙)        mad\n    圣保罗(巴西)        sao\n    墨西哥(墨西哥)        mex\n    墨尔本(澳大利亚)        mel\n    华沙(波兰)        waw\n    印度(孟买)          bom\n    首尔(韩国)          icn\n    阿姆斯特丹(荷兰)   ams\n    亚特兰大(美国)        atl\n    巴黎(法国)          cdg\n    达拉斯(美国)         dfw\n    新泽西(美国)         ewr\n    法兰克福(德国)        fra\n    伦敦(英国)          lhr\n    迈阿密(美国)         mia\n    芝加哥(美国)         ord\n    西雅图(美国)         sea\n    硅谷(美国)          sjc\n    斯德哥尔摩(瑞典)   sto\n    悉尼(澳大利亚)        syd\n    多伦多(加拿大)        yto\n\n服务器版本:\n\n    ubuntu 18           270\n    ubuntu 20           387\n    ubuntu 22           1743\n\n套餐:\n\n    5美元                 vc2-1c-1gb\n    10美元                vc2-1c-2gb\n---------------------------------------------\n请每次选择一个模式\n例:python vultr.py --create -c sto -l jarcis\n---------------------------------------------\n'
parser.description = hit
parser.add_argument('--create', action="store_true", help='输入该参数进入创建模式,默认为False')
parser.add_argument('--delete', action="store_true", help='输入该参数进入删除模式,默认为False,请添加-i参数')
parser.add_argument('--view', action="store_true", help='输入该参数进入查看模式,默认为False')
parser.add_argument('-c', type=str, default='lax', help='请输入你想创建的服务器的所属地区,默认建立在洛杉矶')
parser.add_argument('-p', type=str, default='vc2-1c-1gb', help='选择建立的组合金额,分为5美金与10美金每月,默认5美金')
parser.add_argument('-l', type=str, default='default', help='请输入你想创建的服务器名称,默认为default')
parser.add_argument('-o', type=int, default=387, help='请输入你想创建的服务器系统,默认为ubuntu 20')
parser.add_argument('--hostname', type=str, default='test', help='请输入你想创建的服务器主机名,默认为test')
parser.add_argument('-t', type=str, default='test', help='请输入你想创建的服务器标签,默认为test')
parser.add_argument('-i', type=str, default='', help='请输入你想删除的服务器id')
args = parser.parse_args()

# 修改api_key, 将api_key替换成vultr中的api
headers = {
        'Authorization': 'Bearer ' + 'api_key',
        'Content-Type': 'application/json'
    }

if args.create and args.delete and args.view:
    print("请选择一个模式")
elif args.create:
    data = json.loads(create_instance(args.c,args.p,args.l,args.o,args.hostname,args.t))
    print("服务器创建成功!")
    print("Server_ID : " + data['instance']['id'])
    print("Server_OS : " + data['instance']['os'])
    print("Server_PLAN : " + data['instance']['plan'])
    print("Server_ADDRESS : " + data['instance']['region'])
    print("Server_STATUS : " + data['instance']['status'])
    print("服务器默认账户:root")
    print("服务器默认密码:" + data['instance']['default_password'])
    print("服务器IP请在创建一分钟后,使用查看模式获取")
elif args.delete:
    if args.i == '':
        print('请输入你想删除的服务器id')
    else:
        data = delete_instance(args.i)
        if len(data) != 0:
            print("该id不存在,删除失败!")
        else :
            print("删除成功!")
elif args.view:
    data = json.loads(get_instance())
    print("您一共有{}个服务器,分别是:\n".format(len(data['instances'])))
    print("-----------------------------------------------------")
    for i in range(len(data['instances'])):
        print("Server_IP : " + data['instances'][i]['main_ip'])
        print("Server_create_time : " + data['instances'][i]['date_created'])
        print("Server_ID : " + data['instances'][i]['id'])
        print("Server_OS : " + data['instances'][i]['os'])
        print("Server_PLAN : " + data['instances'][i]['plan'])
        print("Server_ADDRESS : " + data['instances'][i]['region'])
        print("Server_STATUS : " + data['instances'][i]['status'])
        print("-----------------------------------------------------")
else:
    print("请选择一个模式")

请问如何将上面的python代码写成webservice?

flask了解一下~

  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:python调用webservice

你这是写成个webservice还是调用接口,写的话用Django,调用楼上说的那个就很不错

可以用flask 轻量级只提供接口就好了。也可以用django做接口服务。把你的每个函数都用接口的形式提供出去。
flask服务搭建很简单奥。接口示例

from socket import MsgFlag
from flask import request
from __init__ import app,api
from flask_restful import Resource

@app.route("/")
def hello_world():
  return {"success": True, "message":"hello,world"}

MsgFLOW = ''
class hello(Resource):
  def post(self):
    global MsgFLOW
    MsgFLOW = request.form.to_dict()['msgflow']
    print(request)
    print(request.method,dict(request.headers),request.args,request.form.to_dict()['msgflow'])
    response = {
      "method":request.method,
      "head":dict(request.headers),
      "data":request.args,
      "test":"落日"
    }
    return response

class msgflow(Resource):
  def get(self):
    return MsgFLOW
api.add_resource(hello, '/hello')# 传递参数测试接口
api.add_resource(msgflow, '/msgflow')# 返回参数接口
if __name__ == "__main__":
  app.run()