📖将服务和抓取分开,最大程度节省内存
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)"
|
||||
|
||||
# 定义日志文件路径
|
||||
CRON_LOG_FILE="$SCRIPT_DIR/cron_grab.log"
|
||||
API_LOG_FILE="$SCRIPT_DIR/api_grab.log"
|
||||
# CRON_LOG_FILE="$SCRIPT_DIR/cron_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 -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 "===================================="
|
||||
|
||||
# 后台运行服务端,将数据映射到API
|
||||
echo "****正在启动API服务****"
|
||||
nohup python3 $SCRIPT_DIR/server.py > $API_LOG_FILE 2>&1 &
|
||||
nohup $API_COMMAND &>/dev/null &
|
||||
API_PID=$!
|
||||
sleep 5 # 等待API服务启动,可能需要调整等待时间
|
||||
|
||||
echo "API 服务已启动:http://localhost:1223"
|
||||
echo "API 服务日志:$API_LOG_FILE"
|
||||
echo "API 服务进程号:$API_PID"
|
||||
echo "API 服务关闭命令:kill -9 $API_PID"
|
||||
echo "文档地址:https://blog.qyliu.top/posts/4dc716ec/"
|
||||
@ -43,4 +54,9 @@ if [ "$USER_CHOICE" -eq 1 ]; then
|
||||
echo "****爬取成功****"
|
||||
else
|
||||
echo "退出选项被选择,掰掰!"
|
||||
|
||||
echo "===================================="
|
||||
echo "定时抓取的部分请自行设置,如果有宝塔等面板可以按照说明直接添加,如果没有宝塔可以查看本脚本上面屏蔽的部分,自行添加到 crontab 中"
|
||||
echo "===================================="
|
||||
|
||||
fi
|
||||
|
@ -14,7 +14,8 @@
|
||||
### 2024-08-11
|
||||
|
||||
* 添加服务器部署的情况下,合并github结果的选项
|
||||
* 正在测试自部署是否成功
|
||||
* 由于复杂性,决定将服务和定时抓取分开,使用面板自带进行配置,防止小白无法配置
|
||||
* 修改文档,添加自部署部分
|
||||
|
||||
### 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.responses import HTMLResponse, JSONResponse
|
||||
from starlette.middleware.cors import CORSMiddleware
|
||||
import schedule
|
||||
import time
|
||||
import logging
|
||||
import os
|
||||
import json
|
||||
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_conf import load_config
|
||||
@ -23,10 +18,6 @@ app.add_middleware(
|
||||
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)
|
||||
async def root():
|
||||
try:
|
||||
@ -74,10 +65,6 @@ async def get_random_article():
|
||||
return JSONResponse(content={"error": "Failed to decode JSON"}, status_code=500)
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 清空日志文件
|
||||
if os.path.exists(log_file):
|
||||
with open(log_file, 'w'):
|
||||
pass
|
||||
# 启动FastAPI应用
|
||||
import uvicorn
|
||||
uvicorn.run(app, host='0.0.0.0', port=1223)
|
||||
|
Loading…
x
Reference in New Issue
Block a user