📖将服务和抓取分开,最大程度节省内存
This commit is contained in:
		
							
								
								
									
										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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user