2024-07-03 14:09:45 +00:00
|
|
|
|
from flask import Flask, jsonify, render_template,request
|
|
|
|
|
import json
|
|
|
|
|
|
2024-07-03 14:18:03 +00:00
|
|
|
|
import os
|
|
|
|
|
import sys
|
2024-07-04 15:14:15 +00:00
|
|
|
|
import filelock
|
2024-07-03 14:09:45 +00:00
|
|
|
|
|
2024-07-03 14:18:03 +00:00
|
|
|
|
def resource_path(relative_path):
|
|
|
|
|
""" Get absolute path to resource, works for dev and for PyInstaller """
|
|
|
|
|
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
|
return os.path.join(base_path, relative_path)
|
|
|
|
|
|
|
|
|
|
app = Flask(__name__, static_folder=resource_path('web'), static_url_path='')
|
2024-07-03 14:09:45 +00:00
|
|
|
|
|
|
|
|
|
@app.route('/')
|
|
|
|
|
def index():
|
|
|
|
|
return app.send_static_file('index.html')
|
|
|
|
|
|
|
|
|
|
@app.route('/api/config')
|
|
|
|
|
def get_config():
|
|
|
|
|
with open('cfg.json', 'r', encoding='utf-8') as f:
|
|
|
|
|
config = json.load(f)
|
|
|
|
|
return jsonify(config)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.route('/saveForm', methods=['POST'])
|
|
|
|
|
def submit():
|
|
|
|
|
username = request.json.get('name')
|
|
|
|
|
password = request.json.get('email')
|
|
|
|
|
|
|
|
|
|
# 执行提交逻辑
|
|
|
|
|
print(username,password)
|
|
|
|
|
|
|
|
|
|
return jsonify({"code": 0, "msg": "恭喜,注册成功!"})
|
|
|
|
|
|
2024-07-09 02:47:35 +00:00
|
|
|
|
|
|
|
|
|
@app.route('/api/getStatus')
|
|
|
|
|
def getStatus():
|
|
|
|
|
#产生三组随机数,随机数在-1 0 1之间
|
|
|
|
|
import random
|
|
|
|
|
import time
|
|
|
|
|
time.sleep(1)
|
|
|
|
|
a = random.randint(-1, 1)
|
|
|
|
|
b = random.randint(-1, 1)
|
|
|
|
|
c = random.randint(-1, 1)
|
|
|
|
|
return jsonify({"code": 0, "data": {'state':[a, b, c]}})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.route('/sendData',methods=['POST'])
|
|
|
|
|
def sendUPD():
|
|
|
|
|
#print the keys and values of the request
|
|
|
|
|
print(request.json)
|
|
|
|
|
return jsonify({"code": 0, "msg": "发送指令成功!"})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-07-04 15:14:15 +00:00
|
|
|
|
# 定义锁文件的路径
|
|
|
|
|
LOCKFILE = 'app.lock'
|
|
|
|
|
|
|
|
|
|
def acquire_lock(lock_file):
|
|
|
|
|
"""
|
|
|
|
|
获取文件锁
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
lock_file: 锁文件路径
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
FileLock 对象 如果成功获取锁,None 否则
|
|
|
|
|
"""
|
|
|
|
|
try:
|
|
|
|
|
lock = filelock.FileLock(lock_file)
|
|
|
|
|
lock.acquire(timeout=1)
|
|
|
|
|
return lock
|
|
|
|
|
except filelock.Timeout:
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
def release_lock(lock):
|
|
|
|
|
if lock:
|
|
|
|
|
lock.release()
|
|
|
|
|
|
2024-07-03 14:09:45 +00:00
|
|
|
|
def start_flask():
|
2024-07-10 02:41:37 +00:00
|
|
|
|
app.run(debug=True, port=80, use_reloader=False)
|
2024-07-03 14:09:45 +00:00
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2024-07-04 15:14:15 +00:00
|
|
|
|
# 以进程方式运行服务
|
|
|
|
|
# import threading
|
|
|
|
|
# flask_thread = threading.Thread(target=start_flask)
|
|
|
|
|
# flask_thread.daemon = True
|
|
|
|
|
# flask_thread.start()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lock = acquire_lock(LOCKFILE)
|
|
|
|
|
if not lock:
|
|
|
|
|
print("Another instance is already running. Exiting...")
|
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
|
|
# 启动 Flask 服务器
|
|
|
|
|
print("Starting Flask server...")
|
|
|
|
|
start_flask()
|
2024-07-03 14:09:45 +00:00
|
|
|
|
|
2024-07-04 15:14:15 +00:00
|
|
|
|
# 服务器启动后,下面的代码将不会被立即执行,直到服务器停止
|
|
|
|
|
print("This line will not be executed until the server stops.")
|
|
|
|
|
release_lock(lock)
|