帆软FineReport与Python-API实现实时调用

这篇具有很好参考价值的文章主要介绍了帆软FineReport与Python-API实现实时调用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近遇到很头疼的问题,作为一名专门使用FR的数据分析师,我只会python、js和sql,而写出来的python脚本,又不能被FR直接使用,就很难受。后来经过摸索,我想到可以用python制作API,然后通过FR的JS脚本调用这个API不就实现了实时调用,下面我将演示我的实现过程。

注意:以下为Windows环境中的演示,API为GET请求

STEP1.使用Python的Falsk框架编写API接口

注意修改一下你的IP和端口

# -*- 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)  # 默认,调试使用

STEP2.测试API是否生效

API的URL地址构成是:http(或者https)://IP:端口/程序函数/参数

比如IP是111.111.111.111,端口12345,函数名demo,参数两个,为a和b,那么URL即为:

http://111.111.111.111:12345/demo/a/b

直接在浏览器访问,如果能返回结果,说明没问题了。

比如我在上面源码中展示的实例,如果你运行返回如下结果,说明没问题了。

帆软调用第三方api接口,python,开发语言

同时,还会在这个脚本的同位置生成日志文档,用记事本打开 

帆软调用第三方api接口,python,开发语言

 

STEP3.部署python脚本实现自动运行

这里我们使用的是Windows自带的计划任务管理。

1.在服务器中找到计划任务管理

帆软调用第三方api接口,python,开发语言

 2.新建一个计划任务,名称随意起,主要设置什么时候运行,运行什么就行

常规:在安全选项中设置为不管用户是否登录都要运行,且勾选不储存密码

帆软调用第三方api接口,python,开发语言

 触发器:按照你的计划,什么时候开始,或者隔几个小时开始,记得勾选“已启用”,否则不生效,这里我设置每天零点零一分重置一次

帆软调用第三方api接口,python,开发语言

 操作:这里设置的就是你的脚本位置,除了脚本的位置,还要在起始于设置脚本的文件夹位置

帆软调用第三方api接口,python,开发语言

以上即可, 其他的根据需要设置吧。这样就实现了服务器每日重置计划,避免突然失效了

STEP4.帆软编写JS实现调用

这里我做了一个参数输入,一个按钮,一个结果输出,使用填报模式预览

帆软调用第三方api接口,python,开发语言

参数输入框控件,控件名称为textEditor1,值是一个公式【int(rand()*100)】,生成1-100的随机数

结果输出框控件,控件名称为textEditor0,除此之外没做任何修改

按钮控件,控件名称无所谓,新建一个点击事件,选择JavaScript脚本,下面是代码:

注意匹配一下控件名称、接口URL一致

// 获取参数(如果有)
var canshu = _g().parameterEl.getWidgetByName("textEditor1").getValue();
// 目标网址
const url = 'http://你的IP:你的端口/你的函数名/' + canshu;
// 创建一个新的 XMLHttpRequest 对象
const xhr = new XMLHttpRequest();
// 设置请求方法和目标 URL
xhr.open('GET', url, true);
// 监听请求状态变化
xhr.onreadystatechange = function () {
  // 当请求状态为完成时
  if (xhr.readyState === XMLHttpRequest.DONE) {
    // 确保请求成功
    if (xhr.status === 200) {
      console.log('Response:', xhr.responseText);
      // 赋予控件实际值
      kongjian= _g().parameterEl.getWidgetByName("textEditor0");
      kongjian.setValue("Response:"+xhr.responseText,false);
    } else {
      console.error('Error:', xhr.status, xhr.statusText);
    }
  }
};
// 发送请求
xhr.send();
// 刷新页面
setTimeout(function() {_g().parameterCommit(); }, 500)

预览之后,如果得到下面的结果:

帆软调用第三方api接口,python,开发语言

则为这个API可以正常使用了,接下来你可以自己对python脚本和js脚本做修改,实现随意接收参数和自定义函数进行数据处理啦!! 文章来源地址https://www.toymoban.com/news/detail-798959.html

到了这里,关于帆软FineReport与Python-API实现实时调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python ❀ 使用代码实现API接口调用详解

    本文主要讲解常用API接口如何使用python实现。 API :Application Programming Interface,是 应用程序开发接口 的缩写,意思是一些预设好的函数或方法,这些预设好的函数或方法允许第三方程序通过网络来调用数据或提供基于数据的服务。 Python运行环境:python3.10.2 + PyCharm 使用 pip

    2024年01月18日
    浏览(44)
  • python:使用RESTful API(flask)调用python程序传递参数,实现Web端调用python程序

    现有一个用python写的程序(或者是一个或几个的函数接口),需要在Web前端调用python写的函数。如果直接用前端java来调用会很不方便,而且会出现各种麻烦的问题,下面给出如何在web前端调用python的接口。 使用python的RESTful API库将python写的函数封装为Web端可调用的接口,在

    2024年01月20日
    浏览(40)
  • 用python实现调用百度图片搜索的API

    前言: 这段代码是一个简单的图片爬虫程序 它可以通过输入,在百度图片中搜索相关图片,并返回一张随机的图片。 代码使用Flask框架搭建了一个简单的Web应用,将用户输入的作为参数传递给爬虫程序,然后从百度图片中获取相关图片的URL 并随机选择一张返回

    2024年02月11日
    浏览(63)
  • 【课件】Python调用OpenAI API实现ChatGPT多轮对话

    如何实现多轮对话? gpt-3.5-turbo 模型调用方法 openai.ChatCompletion.create 里传入的 message 是一个列表,列表里每个元素是字典,包含了角色和内容,我们只需将每轮对话都存储起来,然后每次提问都带上之前的问题和回答即可。 代码解析: ChatGPT 类,包含三个函数: __init__ 初始

    2024年02月03日
    浏览(48)
  • python调用海康网络摄像头,实时显示监控内容

    用网线将海康威视摄像头与电脑连接在一起;(或者用交换机,在一个交换机下面) 海康摄像头的默认ip是192.168.1.64 效果:和通过海康摄像头网址效果一样 rtsp://用户名:密码@ip地址/Streaming/Channels/2

    2024年02月16日
    浏览(38)
  • Web开发:React+Flask实现实时相机调用

    为了方便利用机器视觉算法,使用React+Flask前后端分离的办法实现实时相机的调用。由前端向后端请求视频流,后端接受请求后向前端发送视频流数据,方便在后端使用各种算法对视频流数据进行处理。 成功实现后,打开相机开关,即可在前端调用相机。 项目采用前后端分离

    2024年01月22日
    浏览(29)
  • Python调用API教程

    随着互联网技术的发展,API(Application Programming Interface)的应用越来越广泛。API是指一系列预先定义好的接口,用于以标准化的形式、规范的方式、安全高效地完成两个不同系统之间的信息交互。在这篇文章中,我们将详细介绍Python调用API的方法和技巧。 使用Python调用API的第

    2024年02月07日
    浏览(45)
  • Python实战 | 如何使用 Python 调用 API

    **本文目录 ** 一、前言 二、调用浙江·数据开放平台API获取数据 (一)API获取数据的流程 (二)HTTP请求 (三)API的参数 (四)使用request库获取API数据 三、调用百度通用翻译API **四、** 总结 本文共8914个字,阅读大约需要23分钟,欢迎指正! API 的全称为\\\" Application Programmi

    2024年01月21日
    浏览(37)
  • python调用chatGPT的API

    最近一直在研究GPT,LLM,把其他东西都荒废了,随便更新一个,凑个字数。 1.python标准接口使用 python接入chatGPT,用flask封装成API接口,这样你就可以自己把他接入到微信,小程序,公众号或者各种地方了。 先上代码: 里面有几个点需要注意。 1.是APIkey的获取。 首先登陆Op

    2024年02月08日
    浏览(41)
  • Python调用文心一言的API

    最近申请了文心一言的key,然后尝试调用了一下文心一言,这里使用一个简单的方式来调用文心一言: 然后就可以开开心心的使用文心一言的API了。 文心千帆

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包