python3.6写一个http接口服务,给别人调用1

python3.6写一个http接口服务,给别人调用1一、python3.6写一个http接口服务,给别人调用1首先推荐tornado,Tornado是一个Pythonweb框架和异步网络库,最初在FriendFeed开发。通过使用无阻塞网络I/O,Tornado可以扩展到数万个开放连接,使其成为长轮询、WebSocket和其他需要与每个用户建立长时间连接的应用程序的理想选择。简易而且本地win10能够跑起来。二、Torna…

大家好,又见面了,我是你们的朋友全栈君。

一、python3.6写一个http接口服务,给别人调用1

        首先推荐tornado,Tornado是一个Python web框架和异步网络库,最初在FriendFeed开发。通过使用无阻塞网络I/O,Tornado可以扩展到数万个开放连接,使其成为长轮询、WebSocket和其他需要与每个用户建立长时间连接的应用程序的理想选择。简易而且本地win10能够跑起来。

二、Tornado的get接口代码实现

       1.  pip install tornado

       2.  代码调用:

import tornado.ioloop
import tornado.web
import json


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        """get请求"""
        a = self.get_argument('a')
        b = self.get_argument('b')
        c = int(a) + int(b)
        self.write("c=" + str(c))

    def post(self):
        '''post请求'''
        body = self.request.body
        body_decode = body.decode()
        body_json = json.loads(body_decode)
        a = body_json.get("a")
        b = body_json.get("b")
        c = int(a) + int(b)
        self.write("c=" + str(c))

application = tornado.web.Application([(r"/add", MainHandler), ])

if __name__ == "__main__":
    application.listen(8868)
    tornado.ioloop.IOLoop.instance().start()

       3.  GET接口访问:http://127.0.0.1:8868/add?a=1&b=2 

            浏览器请求结果:

            python3.6写一个http接口服务,给别人调用1

       4. POST接口请求  http://127.0.0.1:8868/add

python3.6写一个http接口服务,给别人调用1

 

      也可以使用Django或者Tornado 

三、调用一个函数的

# -*- coding:utf-8 -*-
# -*- created by: mo -*-

from concurrent.futures import ThreadPoolExecutor
from tornado.concurrent import run_on_executor
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.gen
import json
import traceback

def add(a,b):
    c = int(a) + int(b)
    return str(c)


class MainHandler(tornado.web.RequestHandler):
    executor = ThreadPoolExecutor(32)
    @tornado.gen.coroutine
    def get(self):
        '''get接口'''
        htmlStr = '''
                    <!DOCTYPE HTML><html>
                    <meta charset="utf-8">
                    <head><title>Get page</title></head>
                    <body>
                    <form		action="/post"	method="post" >
                    a:<br>
                    <input type="text"      name ="a"     /><br>
                    b:<br>
                    <input type="text"      name ="b"     /><br>
                    
                    <input type="submit"	value="add"	/>
                    </form></body> </html>
                '''
        self.write(htmlStr)

    @tornado.web.asynchronous
    @tornado.gen.coroutine
    def post(self):
        '''post接口, 获取参数'''
        a = self.get_argument("a", None)
        b = self.get_argument("b", None)
        yield self.coreOperation(a, b)

    @run_on_executor
    def coreOperation(self, a, b):
        '''主函数'''
        try:
            if  a != '' and b != '':
                result = add(a, b)  #可调用其他接口
                if result:
                    result = json.dumps({'code': 200, 'result': result, })
                else:
                    result = json.dumps({'code': 210, 'result': 'no result',})

            else:
                result = json.dumps({'code': 211, 'result': 'wrong input a or b', })
            self.write(result)
        except Exception:
            print ('traceback.format_exc():\n%s' % traceback.format_exc())
            result = json.dumps({'code': 503,'result': str(a)+'+'+str(b)})
            self.write(result)


if __name__ == "__main__":

    tornado.options.parse_command_line()
    app = tornado.web.Application(handlers=[(r'/post', MainHandler)], autoreload=False, debug=False)
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(8832)
    tornado.ioloop.IOLoop.instance().start()

结果为:

1.

python3.6写一个http接口服务,给别人调用1

2.

.python3.6写一个http接口服务,给别人调用1

找了好多东西,都不靠普

老版本的: 用Python编写一个简单的Http Server – 丁培飞 – 博客园

这个不错,但还是不行:python 搭建简单的http server,可直接post文件_Ghost-CSDN博客_httpserver post python

看到这里,原来改版了:http.server — HTTP servers — Python 3.10.2 documentation

不过把BaseHTTPServer、CGIHTTPServer等,在便3.4.2后都集成到http.server里边去了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142173.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2021软件测试面试题及答案_2021年软件测试面试题大全

    2021软件测试面试题及答案_2021年软件测试面试题大全1.数据库增删改查基本上查询考的比较多,也有考察新增,修改,删除的,极个别的会给出表结构,字段要求,让你据此建表以及临时表查询语句主要考察子查询,聚合函数,多表查询,分组,可参考下面链接(sql50题)sql50题插入语句insertinto[table]([column],[column])values(?,?)删除语句deletefrom[table]wherecolumn=?修改语句update[table]setcolumn=?wherec

    2022年8月26日
    6
  • ADB常用命令及其用法大全「建议收藏」

    ADB常用命令及其用法大全「建议收藏」前言:本文主要记述ADB的常用命令,关于ADB用法大全,可参考文末链接ADB简介:ADB,即AndroidDebugBridge,它是Android开发/测试人员不可替代的强大工具,也是Android设备玩家的好玩具。安卓调试桥(AndroidDebugBridge,adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于sdk/platform-to…

    2022年4月30日
    53
  • 数据库创建失败怎么办_oracle not available怎么解决

    数据库创建失败怎么办_oracle not available怎么解决同事在WinXPsp2上安装OracleDataBase10gEnterpriseEditionRelease10.1.0.2.0后,在创建数据库是发生如下错误:开始是出现一个错误提示对话框:ORA-28547:连接服务器失败,可能是Net8管理错误。

    2022年9月16日
    4
  • linux开启校时服务,NTP校时服务

    linux开启校时服务,NTP校时服务NetworkTimeProtocol(NTP)是用来使计算机时间同步的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)进行同步,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可通过加密确认的方式来防止恶意攻击。学院NTP校时服务基于NTP网络协议搭建,为全校提供精准的校时服务,其默认使用UDP协议的123端口。Windows用户使用方法:…

    2022年6月29日
    27
  • LINUX下tar.bz2包的安装方法

    LINUX下tar.bz2包的安装方法声明:个人觉得文章不错,所以转载过来分享以及自己收藏,只是原出处已经无法查明,只能附上我见文章的地址:http://forum.ubuntu.org.cn/viewtopic.php?t=156932大多以tar.gz和tar.bz2打包软件,大多是通过./configure;make;makeinstall来安装的;有的软件是直接make;makeinstall

    2022年6月5日
    413
  • cookie模拟登录「建议收藏」

    我这里使用的是python中的requests.get(url,headers,cookies).其中headers和cookies都是字典形式。headers作用是模拟浏览器,告诉服务器我不是爬虫。cookies作用是模拟用户,告诉服务器我不是机器人,我是某某用户。以知乎为例,headers可以用模板:headers={‘Host’:’www.zhihu.com’,’User-Agent’…

    2022年4月15日
    74

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号