Python 云服务器应用,Https,定时重启
Python 云服务器应用,Https,定时重启
- 环境搭建
- Python模块
- 模块导入
- 生成Flask实例
- GET处理
- 启动服务器
- 打开网页验证 GET
- 接入证书 支持https
- 申请证书
- 下载证书
- 保留 xxx.crt 和 xxx.key文件就可以了 copy到python项目目录
- ssl_context 配置
- 宝塔面板操作
- 在www目录下新建python工作目录
- 在python工作目录下新建项目子目录
- 上传本地的 .py文件到服务器项目目录下
- 宝塔操作 添加python项目
- 项目配置 - 具体参数如下截图 - 配置好后 提交
- 项目添加模块
- 开放端口 8002 你用到哪个端口就放开哪个端口
- 入站配置
- 打开购买云服务器的平台网站
- 进入实例
- 添加入站规则
- 协议填tcp 端口8002 备注 python服务器 其他的默认 就可以了
- 测试云端GET
- 测试云端POST
- 配置服务器 定时器重启
- 脚本写好了后执行一遍验证一下
- 详细视频教程 - bilibili
- Python源码
- main.py
- LockIP.py
- Demo 仓库
环境搭建
- python 3.6+
- vscode
- centos云服务器一台
- 宝塔Liunx面板已安装
- SSL证书 nginx版本
Python模块
- flask
搭建https服务器 - gevent.pywsgi
支持服务器生产环境
pip install flask
pip install gevent
模块导入
from flask import Flask,request,redirect,jsonify, url_for
from LockIP import IPStatus, check
生成Flask实例
app = Flask(__name__)
GET处理
@app.route('/new')
def newHtml():return "lpl 加油!"
启动服务器
def openserver():import datetimetimestr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')print(f'{timestr} 服务器启动中.....')app.run(host="0.0.0.0", port=8000,debug=True)if __name__ == '__main__':openserver()
打开网页验证 GET
网页输入 http://127.0.0.1:8000/new
出现 lpl 加油! 服务器启动成功

接入证书 支持https
申请证书
以西部数据为案例

下载证书
下载支持nginx的版本

保留 xxx.crt 和 xxx.key文件就可以了 copy到python项目目录
- .crt
- .key
ssl_context 配置
这里填你自己申请的证书文件名 对应的crt和key文件
app.run(host="0.0.0.0", port=8002, ssl_context=('www.geek7.top.crt', 'www.geek7.top.key'))
宝塔面板操作
在www目录下新建python工作目录

在python工作目录下新建项目子目录

上传本地的 .py文件到服务器项目目录下
宝塔操作 添加python项目

项目配置 - 具体参数如下截图 - 配置好后 提交

项目添加模块

不需要填版本好 直接填需要依赖的模块名就好了

开放端口 8002 你用到哪个端口就放开哪个端口
协议填tcp 端口8002 备注 python服务器 其他的默认 就可以了

入站配置
打开购买云服务器的平台网站

进入实例

添加入站规则

协议填tcp 端口8002 备注 python服务器 其他的默认 就可以了
测试云端GET
没有域名的 用ip也可以的 前面要用https
https://www.geek7.top:8002/new
测试云端POST
代码保留在案例了 自己去瞅瞅 给你一个发挥的机会 代码可以跑通 自己研究研究
配置服务器 定时器重启
-
宝塔面板 - 计划任务 - Shell脚本

-
时间自填
-
脚本内容
ps -ef|grep PYServer|grep -v grep|cut -c 9-15|xargs kill -9
cd /www/python_projs/PYServer/
/www/server/pyporject_evn/444ab1b88bd66070681fb30537aeeb8c_venv/bin/python3 -u /www/python_projs/PYServer/server.py
脚本内容 中的PYServer改成你的项目名

脚本写好了后执行一遍验证一下
怎么验证呢? 方式有很多种 最简单的一种 先关闭python项目 然后执行一次脚本 如果项目跑起来了 就表示shell脚本成功
详细视频教程 - bilibili
Python Https云服务器,定时重启
Python源码
main.py
from flask import Flask,request,redirect,jsonify, url_for
from LockIP import IPStatus, checkapp = Flask(__name__)@app.route('/new')
def newHtml():ip = request.remote_addrstatus = check(ip)if status == IPStatus.Lock:return "你已在黑名单中"elif status == IPStatus.Suspicion:return "频繁触发警告" return "lpl 加油!"@app.route('/form',methods=['POST'])
def form():#获取上传的文件files = request.filesfor key in files:file = files[key]file.save(f"imgs/{file.filename}")return "upload success"def openserver():import datetimetimestr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')print(f'{timestr} 服务器启动中.....')# 本地测试# app.run(host="0.0.0.0", port=8000,debug=True)# debug开发模式# app.run(host="0.0.0.0", port=8002, ssl_context=(# 'www.geek7.top.crt', 'www.geek7.top.key'))#生产环境from gevent import pywsgiserver = pywsgi.WSGIServer(('0.0.0.0',8002),app,keyfile='www.geek7.top.key', certfile='www.geek7.top.crt')server.serve_forever()if __name__ == '__main__':openserver()
LockIP.py
import time
from enum import Enumrequest_history = {} #请求历史信息 包含ip 最后一次请求时间戳 频繁请求计数 违规次数
blacklist = [] #黑名单 通知一次玩家已经是在黑名单了
locklist = [] #锁定列表 返回空字符串class IPStatus(Enum):General = 1 Lock = 2Suspicion = 3def check( ip ):# 锁定ip列表if ip in locklist:return IPStatus.Lock# 黑名端 会通知一次客户端if ip in blacklist:locklist.append(ip)return IPStatus.Suspicion# 1秒内请求限制5次if ip not in request_history.keys():request_history[ip] = [time.time(), 1, 0 ] # 最近call的时间, 短时间内调用的次数, 频繁计数else:if time.time() - request_history[ip][0] < 1:request_history[ip][1] += 1# 频繁请求 违规处理if request_history[ip][1] >= 5:#违规次数统计request_history[ip][2] += 1if request_history[ip][2] >= 5:blacklist.append(ip) #加入黑名端return IPStatus.Suspicionelse:request_history[ip][1] = 1request_history[ip][0] = time.time()return IPStatus.General
Demo 仓库
github
相关文章:
Python 云服务器应用,Https,定时重启
Python 云服务器应用,Https,定时重启 环境搭建Python模块模块导入生成Flask实例GET处理启动服务器打开网页验证 GET接入证书 支持https申请证书下载证书保留 xxx.crt 和 xxx.key文件就可以了 copy到python项目目录ssl_context 配置 宝塔面板操作在www目录下新建python工作目录在…...
pytorch 笔记:dist 和 cdist
1 dist 1.1 基本使用方法 torch.dist(input, other, p2) 计算两个Tensor之间的p-范数 1.2 主要参数 input输入张量other另一个输入张量p范数 input 和 other的形状需要是可广播的 1.3 举例 import torchxtorch.randn(4) x #tensor([ 1.2698, -0.1209, 0.0462, -1.3271…...
Java的List中的各种浅拷贝和深拷贝问题
先来看一组代码 public class Temp{public static void main(String[] args) {List<Integer> list new ArrayList<>();list.add(1);list.add(2);list.add(3);List<Integer> temp list;list.add(4);System.out.println(list.toString());System.out.print…...
20231207_最新已测_Centos7.4安装nginx1.24.0_安装详细步骤---Linux工作笔记066
以前安装的太模糊了,干脆重新写一个: 1.首先下载对应的nginx-1.24.0.tar.gz安装文件 2.然后: 去执行命令 安装依赖 yum install -y gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel 3.然后:去解压 tar -zxvf ngi…...
前端知识笔记(二十六)———React如何像Vue一样将css和js写在同一文件
如果想在React中想要像Vue一样把css和js写到一个文件中,可以使用CSS-in-JS。 使用CSS-in-JS 下载 npm i styled-components使用 就像写scss一样,不过需要声明元素的类型 基本语法及展示如下 import styled from "styled-components"expor…...
Photoshop Circular Text
Ctrl N 新增 现学现卖...
深入解析Spring Boot中的注解@PathVariable、@RequestParam、@RequestBody的正确使用
文章目录 1. 引言2. PathVariable:处理路径变量2.1 简介2.2 使用示例 3. RequestParam:处理请求参数3.1 简介3.2 使用示例 4. RequestBody:处理请求体4.1 简介4.2 使用示例 5. 多个注解的组合使用6. 参数绑定的原理6.1 HandlerMethodArgument…...
Qt Location中加载地图对象
在Qt Location中加载地图对象,你可以按照以下步骤进行操作: 1,首先,确保你已经安装了Qt Location模块,并在项目中包含了相应的头文件。在项目文件(.pro)中添加以下行: QT locatio…...
4-Docker命令之docker ps
1.docker ps介绍 docker ps命令是用来列出容器的相关信息 2.docker ps用法 docker ps [参数] [rootcentos79 ~]# docker ps --helpUsage: docker ps [OPTIONS]List containersAliases:docker container ls, docker container list, docker container ps, docker psOptions…...
你在地铁上修过bug吗?
作为技术人员,有没有遇到下班路上收到老板电话,系统故障,然后地铁上掏出电脑,修bug的场景。自己负责的业务线上出现问题,负责人心里是很慌的,在这种心理状态下做事很容易二次犯错,造成更大的问题…...
CPU、MCU、MPU、DSP、FPGA各是什么?有什么区别?
1、CPU 中央处理器,简称 CPU(Central Processing Unit),中央处理器主要包括两个部分,即控制器、运算器,其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。 电子计算机三大核心部件就是CPU…...
SpringBoot之logback 在Linux系统上启动的时候,设置日志按日期分割并设置指定时间自动清除日志
一、在src/main/resources/下创建logback-spring.xml文件 <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 日志存放路径 --><property name"log.path" value"/home/xmmc/logs" /><!-- 日志…...
OpenHarmony北向-让更广泛的应用开发者更容易参与
一、标准系统的体验 按照官方文档指导,这样操作,OH标准系统开发板就可以运行开发者开发的OpenHarmony应用了。 二、实际情况 按照开发文档上的说明,肯定是装不上的。因为OH不同的发行版,不同发行板不同的设备,IDE&…...
数据结构之归并排序及排序总结
目录 归并排序 归并排序的时间复杂度 排序的稳定性 排序总结 归并排序 归并排序大家只需要掌握其递归方法即可,非递归方法由于在某些特殊场景下边界难控制,我们一般很少使用非递归实现归并排序。那么归并排序的递归方法我们究竟是怎样实现呢ÿ…...
仿windows12网盘,私有云盘部署教程,支持多种网盘
仿windows12网盘,私有云盘部署教程,支持多种网盘 资源宝分享:www.httple.net 视频教程:https://www.bilibili.com/video/BV1m64y1G7Bq/ 宝塔部署方式: 1.验证是否安装jdk,没有安装请看安装教程 推荐安装jdk8(注意您…...
深度学习 时间序列回归学习笔记
目录 常用的深度学习时间序列回归模型: ARIMA模型 ETS模型 效果评估...
【postgresql】ERROR: INSERT has more expressions than target columns
执行下面sql insert into apply_account_cancellation3 select * from pply_account_cancellation; 返回下面错误信息 insert into apply_account_cancellation3 select * from apply_account_cancellation > ERROR: INSERT has more expressions than target colu…...
Android Kotlin语言下的文件存储
目录 将数据存储到文件中 创建文件和保存数据 读取文件 SharedPreferences存储 存储数据到SharedPreferences中 Context类中的getSharedPreferences()方法 Activity类中的getPreferences()方法 从SharedPreferences中读取数据 SQLite数据库存储 创建数据库 调用数据…...
Verilog 入门(八)(验证)
文章目录 编写测试验证程序波形产生值序列重复模式 测试验证程序实例从文本文件中读取向量实例:时序检测器 测试验证程序用于测试和验证设计方法的正确性。Verilog 提供强有力的结构来说明测试验证程序。 编写测试验证程序 测试验证程序有三个主要目的:…...
vue3 vue-router 导航守卫 (五)
在Vue 3中,导航守卫仍然是一个重要的概念,用于在路由切换时执行一些特定的逻辑。Vue Router提供了多个导航守卫,包括全局守卫、路由独享守卫和组件内守卫。可以在路由切换时执行一些特定的逻辑,例如身份验证、权限控制、数据加载等…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx
“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网(IIoT)场景中,结合 DDS(Data Distribution Service) 和 Rx(Reactive Extensions) 技术,实现 …...

