原文章:http://t.csdnimg.cn/ZrFJJ
原因:写出来的python脚本不能被FR直接使用
方案:用Python制作API,通过FR的JS脚本调用这个API,从而实现实时调用。
1. 使用Python的Falsk框架编写API接口
原文章代码如下:
点击查看代码
# -*- coding: UTF-8 -*-
# @Author : JW-Panda-数据分析师
from flask import Flask # 框架
from flask_cors import CORS # 实现跨域
from gevent import pywsgi # 使用WSGI启动服务
import win32api, win32gui # 静默运行
import time, os # 时间及控制台命令
import logging # 日志记录
# 静默模式运行
ct = win32api.GetConsoleTitle()
hd = win32gui.FindWindow(0, ct)
win32gui.ShowWindow(hd, 0)
# Flask 架构
app = Flask(__name__) # 获取实例
CORS(app) # 解决跨域问题
def check_pid(port):
"""
查找被占用端口并杀掉重置
:param port: 端口号
:return: 无返回
"""
try:
r = os.popen("netstat -ano | findstr " + port)
PID = r.read().split()[-1]
print("端口占用,关闭端口重新执行。")
os.system("taskkill /PID " + str(PID) + " /T /F")
except:
print('端口未被占用,API正常运行')
pass
def save_record():
logging.basicConfig(filename='.\Api_use.log',
filemode='a', level=logging.INFO, datefmt='%a, %d %b %Y %H:%M:%S')
# <a>是带参传入,如果有参数则放到这里,<int:a>表示传入int类型,多参数用“/”依次往后
@app.route("/test/<a>", methods=["GET"]) # 指定外网访问的路径和方式
def test(a): # a是带参传入
# 此处放入python程序
runtime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
if a:
pass
x = str(runtime) + "_test_" + str(a)
logging.info(x)
return x # x为需要返回的数据
if __name__ == '__main__':
"""
关于本机IP,可以通过cmd的【ipconfig】查找以太网适配器的ipv4地址,可能需要提前设置UDP转发
关于端口号:可以通过cmd的【netstat】命令,根据ip找到对应的端口,自定义一个从来没从过的,范围[0-65535],避开常用
"""
print('{:-^30}'.format('接口开始运行'))
save_record() # 开始记录日志
host = '111.111.111.111' # 这里替换你的IP
port = '55333' # 这里替换你的端口
check_pid(port) # 检查端口占用
print('http://{}:{}/'.format(host, int(port)))
server = pywsgi.WSGIServer((host, int(port)), app) # 使用WSGI启动服务
server.serve_forever()
# app.run(host="10.1.175.107", port=62013, debug=True) # 默认,调试使用
在这个界面添加各种模块,新建工程,无脑化的将代码粘入
将上面的代码修改下,修改的内容为
host = '127.0.0.1' # 这里替换你的IP port = '12345' # 这里替换你的端口
点击查看代码
# -*- coding: UTF-8 -*-
# @Author : JW-Panda-数据分析师
from flask import Flask # 框架
from flask_cors import CORS # 实现跨域
from gevent import pywsgi # 使用WSGI启动服务
import win32api, win32gui # 静默运行
import time, os # 时间及控制台命令
import logging # 日志记录
# 静默模式运行
ct = win32api.GetConsoleTitle()
hd = win32gui.FindWindow(0, ct)
win32gui.ShowWindow(hd, 0)
# Flask 架构
app = Flask(__name__) # 获取实例
CORS(app) # 解决跨域问题
def check_pid(port):
"""
查找被占用端口并杀掉重置
:param port: 端口号
:return: 无返回
"""
try:
r = os.popen("netstat -ano | findstr " + port)
PID = r.read().split()[-1]
print("端口占用,关闭端口重新执行。")
os.system("taskkill /PID " + str(PID) + " /T /F")
except:
print('端口未被占用,API正常运行')
pass
def save_record():
logging.basicConfig(filename='.\Api_use.log',
filemode='a', level=logging.INFO, datefmt='%a, %d %b %Y %H:%M:%S')
# <a>是带参传入,如果有参数则放到这里,<int:a>表示传入int类型,多参数用“/”依次往后
@app.route("/test/<a>", methods=["GET"]) # 指定外网访问的路径和方式
def test(a): # a是带参传入
# 此处放入python程序
runtime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
if a:
pass
x = str(runtime) + "_test_" + str(a)
logging.info(x)
return x # x为需要返回的数据
if __name__ == '__main__':
"""
关于本机IP,可以通过cmd的【ipconfig】查找以太网适配器的ipv4地址,可能需要提前设置UDP转发
关于端口号:可以通过cmd的【netstat】命令,根据ip找到对应的端口,自定义一个从来没从过的,范围[0-65535],避开常用
"""
print('{:-^30}'.format('接口开始运行'))
save_record() # 开始记录日志
host = '127.0.0.1' # 这里替换你的IP
port = '12345' # 这里替换你的端口
check_pid(port) # 检查端口占用
print('http://{}:{}/'.format(host, int(port)))
server = pywsgi.WSGIServer((host, int(port)), app) # 使用WSGI启动服务
server.serve_forever()
# app.run(host="10.1.175.107", port=62013, debug=True) # 默认,调试使用
点击绿色的运行按钮,看到下面的运行信息
------------接口开始运行------------
端口未被占用,API正常运行
http://127.0.0.1:12345/
好的,正常运行。
标签:__,调用,app,端口,api,time,import,port,帆软 From: https://www.cnblogs.com/jywr/p/18320286