python 开启restful之路

1、环境安装及配置 python & pip

python 官网下载 3.8

Python Release Python 3.8.0 | Python.org

Centos安装python3详细教程_centos 安装python3-CSDN博客

2、IDE工具  PyCharm Community Edition 2023.3.4

3、Flask 构建简单的 web应用

编写 app.py文件

from flask import request
import pymysqlfrom flask import Flask
from flask_restful import Apifrom gevent import pywsgiapp = Flask(__name__)
api = Api(app)conn = pymysql.connect(host='192.168.5.190', port=3306, user='aaxxxx',passwd='xxxxx',db='spider_data', charset='utf8', connect_timeout=36000)@app.route('/addObj', methods=['POST'])
def addObj():flight_number = request.json.get("flightNumber")if flight_number:sql = "SELECT distinct departureCityName,arrivalCityName FROM `tb_xiecheng_airline` where flightNumber like '{}%'".format(flight_number)records = get_result(sql, conn)if records:return recordselse:return {"msg": "无数据"}else:return {"msg": "flightNumber参数为空"}@app.route('/deleteObj', methods=['POST'])
def deleteObj():inputName = request.json.get("name")temp = {'Data': inputName}for ind, x in enumerate(data):if x['Data'] == inputName:temp = data.pop(ind)return tempreturn {'Data': None}def get_result(sql, conn):cursor = conn.cursor()cursor.execute(sql)rows = cursor.fetchall()records = []for row in rows:record = {"departureCityName":row[0],"arrivalCityName":row[1]}records.append(record)return records# 端口
if __name__ == "__main__":# threaded=True 支持多线程请求app.run(debug=False, port=8001,threaded=True)# WSGI 服务运行Flask 程序# server = pywsgi.WSGIServer(('0.0.0.0', 8001), app)# server.serve_forever()

app.run('0.0.0.0', 8001)  #  开启 8001端口,并支持任意IP请求

如果在运行py 的时候,报依赖没有,则需要通过pip下载安装

pip install xxx

4、模拟请求

5、高性能web服务器

一键解决WARNING: This is a development server. Do not use it in a production deployment. Use a productio-CSDN博客

# 打印当前线程ID
import threading
def print_thread_id():thread_id = threading.get_ident()print(f"当前线程ID: {thread_id}")
 

6、部署应用到服务器

# 后台运行 main 文件
nohup  python app.py > stout.log  2>&1 &

7、编写启动脚本

startup.sh

# 后台启动
echo "start program ... "
nohup  python app.py > stdout.log  2>&1 &
# 设置进程ID到pid文件
echo $! > my.pid

stop.sh

#!/bin/bash
base=`dirname $0`
pidfile=$base/my.pid
if [ ! -f "$pidfile" ];thenecho "app  is not running. exists"exit
fipid=`cat $pidfile`echo -e "`hostname`: stopping current PID  $pid ... "kill -9 $pid

 restart.sh

#!/bin/bashcase $(uname) in
Linux)bin_abs_path=$(readlink -f $(dirname $0));;
*)bin_abs_path=$(cd $(dirname $0) ||exit ; pwd);;
esacsh "$bin_abs_path"/stop.sh
sh "$bin_abs_path"/startup.sh

后续了解下

anaconda

Linux下安装Anaconda3,这个教程一定要看!-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/573414.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯算法赛(二进制王国)

问题描述 二进制王国是一个非常特殊的国家,因为该国家的居民仅由 0 和 1 组成。 在这个国家中,每个家庭都可以用一个由 0 和 1 组成的字符串 S 来表示,例如 101、 000、 111 等。 现在,国王选了出 N 户家庭参加邻国的庆典…

vue2 el-table指定某些数据不参与排序

vue2 el-table指定某些数据不参与排序 1、需求描述2、配置属性方法3、详细代码如下 1、需求描述 最后一行总计不参与排序 2、配置属性方法 el-table 需要配置 sort-change"soltHandle" 方法 el-table-column 需要配置 sortable"custom"属性3、详细代码如…

Go的数据结构与实现【Set】

介绍 Set是值的集合,可以迭代这些值、添加新值、删除值并清除集合、获取集合大小并检查集合是否包含值,集合中的一个值只存储一次,不能重复。 本文代码地址为go-store 简单实现 这是集合的一个简单实现,还不是并发安全的&#…

Android 性能优化(六):启动优化的详细流程

书接上文,Android 性能优化(一):闪退、卡顿、耗电、APK 从用户体验角度有四个性能优化方向: 追求稳定,防止崩溃追求流畅,防止卡顿追求续航,防止耗损追求精简,防止臃肿 …

机器学习——聚类算法-KMeans聚类

机器学习——聚类算法-KMeans聚类 在机器学习中,聚类是一种无监督学习方法,用于将数据集中的样本划分为若干个簇,使得同一簇内的样本相似度高,不同簇之间的样本相似度低。KMeans聚类是一种常用的聚类算法之一,本文将介…

外包干了15天,技术退步明显。。。。。。

说一下自己的情况,本科生,19年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…

开源博客项目Blog .NET Core源码学习(12:App.Application项目结构分析)

开源博客项目Blog的App.Application项目主要定义网站页面使用的数据类,同时定义各类数据的增删改查操作接口和实现类。App.Application项目未安装Nuget包,主要引用App.Core项目的类型。   App.Application项目的顶层文件夹如下图所示,下面逐…

蓝桥杯刷题-分巧克力

分巧克力 二分: N, K map(int, input().split()) w, h [], [] for i in range(N):cur_w, cur_h map(int, input().split())w.append(cur_w)h.append(cur_h)# 判断是否能分成K个及以上的巧克力 def check(a) -> bool: num 0for i in range(N):num (w[i] // …

3月份的倒数第二个周末有感

坐在图书馆的那一刻,忽然感觉时间的节奏开始放缓。今天周末因为我们两都有任务需要完成,所以就选了嘉定图书馆,不得不说嘉定新城远香湖附近的图书馆真的很有感觉。然我不经意回想起学校的时光,那是多么美好且短暂的时光。凝视着窗…

MySQL---事务

目录 一、事务简介 二、事务操作 1.未控制事务 2.事务控制一 3.控制事务二 三、事务的四大特性 四、并发事务问题 五、事务隔离级别 一、事务简介 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或…

Android-Handler详解_使用篇

本文我将从Handler是什么、有什么、怎们用、啥原理,四个方面去分析。才疏学浅,如有错误,欢迎指正,多谢。 1.是什么 因为Android系统不允许在子线程访问UI组件,否则就会抛出异常。所以咱们平实用的最多的可能是在子线…

Leetcode239_滑动窗口最大值

1.leetcode原题链接:. - 力扣(LeetCode) 2.题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口…