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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言最大公约数怎么求算法_最小公倍数c语言算法

    c语言最大公约数怎么求算法_最小公倍数c语言算法1、相减法2、穷举法3、辗转相除法

    2025年6月16日
    3
  • 永久设置python清华镜像源_清华开源镜像站怎么用

    永久设置python清华镜像源_清华开源镜像站怎么用Python配置清华镜像源1.前言使用pip安装服务器在国外的python库时,下载需要很长时间,在配置文件中设置国内镜像可以提高速度,清华镜像源就是其中之一。2.pypi镜像使用帮助网址:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/3.临时配置若只是临时下载一个python库的话,则可使用以下命令进行配置:pipinstal…

    2022年10月21日
    4
  • 报表开发-列表参数

    1.目的:做一个下图的筛选框-实现多选(这是在已有报表基础上加一个筛选框,如果从无到有,步骤略有不同)(点击前)(点击时)2.首先配置数据源制作报表,点击报表中任意一个指标,在左上角出现数据源3.从组件中拖一个列表参数过来4.拖过来是这样子的,右键,录入数据5.录入固定数据,绑定数据源(记得按“应用”和“确定”)添加完就下面这样了6….

    2022年4月5日
    45
  • Linux高性能server规划——多进程编程

    Linux高性能server规划——多进程编程

    2022年1月15日
    39
  • Matlab中的plotyy用法总结[通俗易懂]

    Matlab中的plotyy用法总结[通俗易懂]在梳理数据,或者写论文的时候往往需要画出两个纵坐标不同的图,以显现两组数据的不同变化,在这种情况下,一般两组数据的横坐标均是相同的,但是纵坐标确实不是一个数量级的,所以为了更好的表现两组数据的变化趋势,需要用到plotyy函数绘制双纵坐标的二维图,具体用法总结如下:调用格式:1.plotyy(X1,Y1,X2,Y2):以左、右不同纵轴绘制X1-Y1、X2-Y2两条曲线。2.plotyy(…

    2022年6月29日
    59
  • java之葵花宝典

    java之葵花宝典importjava util Arrays importjava util Scanner author 男神许老师 2020 年 1 月 1 日 classStudent publicintage publicString publicStuden System ou

    2025年9月18日
    3

发表回复

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

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