📖将服务和抓取分开,最大程度节省内存
This commit is contained in:
parent
47c42c3bbc
commit
c1e72eef31
40
deploy.sh
40
deploy.sh
@ -4,31 +4,42 @@
|
|||||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
# 定义日志文件路径
|
# 定义日志文件路径
|
||||||
CRON_LOG_FILE="$SCRIPT_DIR/cron_grab.log"
|
# CRON_LOG_FILE="$SCRIPT_DIR/cron_grab.log"
|
||||||
API_LOG_FILE="$SCRIPT_DIR/api_grab.log"
|
# API_LOG_FILE="$SCRIPT_DIR/api_grab.log"
|
||||||
|
|
||||||
# 定义要执行的命令
|
# # 定义要执行的命令
|
||||||
COMMAND="python3 $SCRIPT_DIR/run.py"
|
# COMMAND="python3 $SCRIPT_DIR/run.py"
|
||||||
|
|
||||||
# 定义定时任务的执行间隔(例如每四小时一次)
|
# # 定义定时任务的执行间隔(例如每四小时一次)
|
||||||
INTERVAL="4"
|
# INTERVAL="4"
|
||||||
|
|
||||||
# 添加定时任务到 crontab
|
# 添加定时任务到 crontab
|
||||||
(crontab -l 2>/dev/null; echo "0 */$INTERVAL * * * $COMMAND >> $CRON_LOG_FILE 2>&1 && echo '运行成功'") | crontab -
|
# (crontab -l 2>/dev/null; echo "0 */$INTERVAL * * * $COMMAND >> $CRON_LOG_FILE 2>&1 && echo '运行成功'") | crontab -
|
||||||
|
|
||||||
|
# echo "===================================="
|
||||||
|
# echo "定时爬取 成功设置,时间间隔:4h"
|
||||||
|
# echo "定时任务日志:$CRON_LOG_FILE"
|
||||||
|
# echo "===================================="
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 获取当前脚本所在目录
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
|
# 定义 API 服务的启动命令
|
||||||
|
API_COMMAND="python3 $SCRIPT_DIR/server.py"
|
||||||
|
|
||||||
echo "===================================="
|
|
||||||
echo "定时爬取 成功设置,时间间隔:4h"
|
|
||||||
echo "定时任务日志:$CRON_LOG_FILE"
|
|
||||||
echo "===================================="
|
echo "===================================="
|
||||||
|
|
||||||
# 后台运行服务端,将数据映射到API
|
# 后台运行服务端,将数据映射到API
|
||||||
echo "****正在启动API服务****"
|
echo "****正在启动API服务****"
|
||||||
nohup python3 $SCRIPT_DIR/server.py > $API_LOG_FILE 2>&1 &
|
nohup $API_COMMAND &>/dev/null &
|
||||||
API_PID=$!
|
API_PID=$!
|
||||||
sleep 5 # 等待API服务启动,可能需要调整等待时间
|
sleep 5 # 等待API服务启动,可能需要调整等待时间
|
||||||
|
|
||||||
echo "API 服务已启动:http://localhost:1223"
|
echo "API 服务已启动:http://localhost:1223"
|
||||||
echo "API 服务日志:$API_LOG_FILE"
|
|
||||||
echo "API 服务进程号:$API_PID"
|
echo "API 服务进程号:$API_PID"
|
||||||
echo "API 服务关闭命令:kill -9 $API_PID"
|
echo "API 服务关闭命令:kill -9 $API_PID"
|
||||||
echo "文档地址:https://blog.qyliu.top/posts/4dc716ec/"
|
echo "文档地址:https://blog.qyliu.top/posts/4dc716ec/"
|
||||||
@ -43,4 +54,9 @@ if [ "$USER_CHOICE" -eq 1 ]; then
|
|||||||
echo "****爬取成功****"
|
echo "****爬取成功****"
|
||||||
else
|
else
|
||||||
echo "退出选项被选择,掰掰!"
|
echo "退出选项被选择,掰掰!"
|
||||||
|
|
||||||
|
echo "===================================="
|
||||||
|
echo "定时抓取的部分请自行设置,如果有宝塔等面板可以按照说明直接添加,如果没有宝塔可以查看本脚本上面屏蔽的部分,自行添加到 crontab 中"
|
||||||
|
echo "===================================="
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
### 2024-08-11
|
### 2024-08-11
|
||||||
|
|
||||||
* 添加服务器部署的情况下,合并github结果的选项
|
* 添加服务器部署的情况下,合并github结果的选项
|
||||||
* 正在测试自部署是否成功
|
* 由于复杂性,决定将服务和定时抓取分开,使用面板自带进行配置,防止小白无法配置
|
||||||
|
* 修改文档,添加自部署部分
|
||||||
|
|
||||||
### 2024-08-03
|
### 2024-08-03
|
||||||
|
|
||||||
|
2
requirements-server.txt
Normal file
2
requirements-server.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
fastapi
|
||||||
|
uvicorn
|
13
server.py
13
server.py
@ -1,13 +1,8 @@
|
|||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from fastapi.responses import HTMLResponse, JSONResponse
|
from fastapi.responses import HTMLResponse, JSONResponse
|
||||||
from starlette.middleware.cors import CORSMiddleware
|
from starlette.middleware.cors import CORSMiddleware
|
||||||
import schedule
|
|
||||||
import time
|
|
||||||
import logging
|
|
||||||
import os
|
|
||||||
import json
|
import json
|
||||||
import random
|
import random
|
||||||
from threading import Lock, Thread
|
|
||||||
|
|
||||||
from friend_circle_lite.get_info import fetch_and_process_data, sort_articles_by_time
|
from friend_circle_lite.get_info import fetch_and_process_data, sort_articles_by_time
|
||||||
from friend_circle_lite.get_conf import load_config
|
from friend_circle_lite.get_conf import load_config
|
||||||
@ -23,10 +18,6 @@ app.add_middleware(
|
|||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# 配置日志记录
|
|
||||||
log_file = "cron_grab"
|
|
||||||
logging.basicConfig(filename=log_file, level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
|
||||||
|
|
||||||
@app.get("/", response_class=HTMLResponse)
|
@app.get("/", response_class=HTMLResponse)
|
||||||
async def root():
|
async def root():
|
||||||
try:
|
try:
|
||||||
@ -74,10 +65,6 @@ async def get_random_article():
|
|||||||
return JSONResponse(content={"error": "Failed to decode JSON"}, status_code=500)
|
return JSONResponse(content={"error": "Failed to decode JSON"}, status_code=500)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# 清空日志文件
|
|
||||||
if os.path.exists(log_file):
|
|
||||||
with open(log_file, 'w'):
|
|
||||||
pass
|
|
||||||
# 启动FastAPI应用
|
# 启动FastAPI应用
|
||||||
import uvicorn
|
import uvicorn
|
||||||
uvicorn.run(app, host='0.0.0.0', port=1223)
|
uvicorn.run(app, host='0.0.0.0', port=1223)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user