Skip to content

Commit 176fec7

Browse files
author
sunminghui
committed
merge mashb1 rq
1 parent 9df2091 commit 176fec7

File tree

5 files changed

+32
-13
lines changed

5 files changed

+32
-13
lines changed

biz/queue/worker.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from biz.event.event_manager import event_manager
99
from biz.gitlab.webhook_handler import filter_changes, MergeRequestHandler, PushHandler
1010
from biz.utils.code_reviewer import CodeReviewer
11-
from biz.utils.im import im_notifier
11+
from biz.utils.im import notifier
1212
from biz.utils.log import logger
1313

1414
load_dotenv()
@@ -56,7 +56,7 @@ def handle_push_event(webhook_data: dict, gitlab_token: str, gitlab_url: str, gi
5656

5757
except Exception as e:
5858
error_message = f'服务出现未知错误: {str(e)}\n{traceback.format_exc()}'
59-
im_notifier.send_notification(content=error_message)
59+
notifier.send_notification(content=error_message)
6060
logger.error('出现未知错误: %s', error_message)
6161

6262

@@ -119,5 +119,5 @@ def handle_merge_request_event(webhook_data: dict, gitlab_token: str, gitlab_url
119119

120120
except Exception as e:
121121
error_message = f'AI Code Review 服务出现未知错误: {str(e)}\n{traceback.format_exc()}'
122-
im_notifier.send_notification(content=error_message)
122+
notifier.send_notification(content=error_message)
123123
logger.error('出现未知错误: %s', error_message)

biz/utils/code_reviewer.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
import os
12
import re
23
import yaml
34
import abc
45
from typing import Dict, Any, List
56

67
from biz.utils.log import logger
78
from biz.llm.factory import Factory
9+
from biz.utils.token_util import count_tokens, truncate_text_by_tokens
810

911

1012
class BaseReviewer(abc.ABC):
@@ -54,16 +56,25 @@ def __init__(self):
5456
super().__init__("code_review_prompt")
5557

5658
def review_and_strip_code(self, changes_text: str, commits_text: str = '') -> str:
57-
# 如果超长,取前REVIEW_MAX_LENGTH字符
58-
review_max_length = int(os.getenv('REVIEW_MAX_LENGTH', 5000))
59+
"""
60+
Review判断changes_text超出取前REVIEW_MAX_TOKENS个token,超出则截断changes_text,
61+
调用review_code方法,返回review_result,如果review_result是markdown格式,则去掉头尾的```
62+
:param changes_text:
63+
:param commits_text:
64+
:return:
65+
"""
66+
# 如果超长,取前REVIEW_MAX_TOKENS个token
67+
review_max_tokens = int(os.getenv('REVIEW_MAX_TOKENS', 10000))
5968
# 如果changes为空,打印日志
6069
if not changes_text:
6170
logger.info('代码为空, diffs_text = %', str(changes_text))
6271
return '代码为空'
6372

64-
if len(changes_text) > review_max_length:
65-
changes_text = changes_text[:review_max_length]
66-
logger.info(f'文本超长,截段后content: {changes_text}')
73+
# 计算tokens数量,如果超过REVIEW_MAX_TOKENS,截断changes_text
74+
tokens_count = count_tokens(changes_text)
75+
if tokens_count > review_max_tokens:
76+
changes_text = truncate_text_by_tokens(changes_text, review_max_tokens)
77+
6778
review_result = self.review_code(changes_text, commits_text).strip()
6879
if review_result.startswith("```markdown") and review_result.endswith("```"):
6980
return review_result[11:-3].strip()

biz/utils/queue.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,21 @@
55
from redis import Redis
66
from rq import Queue
77

8+
from biz.utils.log import logger
9+
810
load_dotenv()
911
queue_driver = os.getenv('QUEUE_DRIVER', 'async')
1012

1113
if queue_driver == 'rq':
1214
queues = {}
1315

16+
1417
def handle_queue(function: callable, data: any, gitlab_token: str, gitlab_url: str, gitlab_url_slug: str):
1518
if queue_driver == 'rq':
1619
if gitlab_url_slug not in queues:
17-
queues[gitlab_url_slug] = Queue(gitlab_url_slug, connection=Redis(os.getenv('REDIS_HOST', '127.0.0.1'), os.getenv('REDIS_PORT', 6379)))
20+
logger.info(f'REDIS_HOST: {os.getenv("REDIS_HOST", "127.0.0.1")},REDIS_PORT: {os.getenv("REDIS_PORT", 6379)}')
21+
queues[gitlab_url_slug] = Queue(gitlab_url_slug, connection=Redis(os.getenv('REDIS_HOST', '127.0.0.1'),
22+
os.getenv('REDIS_PORT', 6379)))
1823

1924
queues[gitlab_url_slug].enqueue(function, data, gitlab_token, gitlab_url, gitlab_url_slug)
2025
else:

conf/supervisord.worker.conf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ nodaemon=true
33
user=root
44

55
[program:worker]
6-
command=rq worker %(ENV_WORKER_QUEUE)s --url redis://redis:6379 --path /app
6+
#command=rq worker %(ENV_WORKER_QUEUE)s --url redis://redis:6379 --path /app
7+
command=rq worker gitlab_yj_edusoho_cn --url redis://redis:6379 --path /app
78
autostart=true
89
autorestart=true
910
numprocs=1

docker-compose.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ services:
44
context: .
55
dockerfile: Dockerfile
66
target: dev
7-
image: ghcr.io/sunmh207/ai-codereview-gitlab:latest
7+
image: ghcr.io/sunmh207/ai-codereview-gitlab:1.3.1
88
ports:
99
- "5001:5001"
1010
- "5002:5002"
@@ -41,8 +41,10 @@ services:
4141

4242
redis:
4343
image: redis:alpine
44-
# ports:
45-
# - "${REDIS_PORT}:6379"
44+
env_file:
45+
- ./conf/.env
46+
ports:
47+
- "6379:6379"
4648
volumes:
4749
- redis_data:/data
4850
restart: unless-stopped

0 commit comments

Comments
 (0)