Files
physical-boot/scripts/main.py
2024-10-18 11:54:55 +08:00

97 lines
2.5 KiB
Python

from flask import Flask, jsonify
from concurrent.futures import ThreadPoolExecutor
from nasa1 import scrape as scrape_nasa1
from nasa2 import scrape as scrape_nasa2
from esa import scrape as scrape_esa
from threading import Lock
app = Flask(__name__)
executor = ThreadPoolExecutor()
lock = Lock() # 创建一个锁
scrape_running = False # 爬虫执行状态标志
def run_nasa1():
try:
scrape_nasa1()
finally:
global scrape_running
scrape_running = False
def run_nasa2():
try:
scrape_nasa2()
finally:
global scrape_running
scrape_running = False
def run_esa():
try:
scrape_esa()
finally:
global scrape_running
scrape_running = False
def run_all():
try:
scrape_esa()
finally:
global scrape_running
scrape_running = False
@app.route('/scrape/nasa', methods=['GET'])
def nasa():
global scrape_running
if scrape_running:
return jsonify({"message": "NASA scraping is already in progress."})
with lock: # 只允许一个线程进入
scrape_running=True
executor.submit(run_nasa1) # 异步执行爬虫
# asyncio.create_task(scrape_nasa1()) # 异步执行爬虫
return jsonify({"message": "NASA scraping started."})
# 执行完成,重置状态
@app.route('/scrape/nasa2', methods=['GET'])
def nasa2():
global scrape_running
if scrape_running:
return jsonify({"message": "NASA scraping is already in progress."})
with lock: # 只允许一个线程进入
scrape_running=True
executor.submit(run_nasa2) # 异步执行爬虫
# asyncio.create_task(scrape_nasa2())
return jsonify({"message": "NASA scraping started."})
@app.route('/scrape/esa', methods=['GET'])
def esa():
global scrape_running
if scrape_running:
return jsonify({"message": "ESA scraping is already in progress."})
with lock: # 只允许一个线程进入
scrape_running=True
executor.submit(scrape_esa) # 异步执行爬虫
# asyncio.create_task(scrape_esa())
return jsonify({"message": "ESA scraping started."})
@app.route('/scrape/all', methods=['GET'])
def scrape_all():
global scrape_running
if scrape_running:
return jsonify({"message": "All scraping is already in progress."})
with lock: # 只允许一个线程进入
scrape_running = True
executor.submit(scrape_all) # 异步执行爬虫
return jsonify({"message": "All scraping started."})
if __name__ == '__main__':
app.run(debug=True, use_reloader=False)