Skip to content

Commit 1c2a334

Browse files
committed
Merge branch 'feature/queue-driver-rq'
# Conflicts: # biz/event/event_manager.py # biz/queue/worker.py
2 parents 5f02c1b + 8535280 commit 1c2a334

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

api.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def handle_webhook():
133133
if not gitlab_token:
134134
return jsonify({'message': _('Missing GitLab access token')}), 400
135135

136-
gitlab_domain_slug = slugify_url(gitlab_url)
136+
gitlab_url_slug = slugify_url(gitlab_url)
137137

138138
# 打印整个payload数据,或根据需求进行处理
139139
logger.info(_('Received event: {}').format(object_kind))
@@ -142,14 +142,14 @@ def handle_webhook():
142142
# 处理Merge Request Hook
143143
if object_kind == "merge_request":
144144
# 创建一个新进程进行异步处理
145-
handle_queue(handle_merge_request_event, data, gitlab_token, gitlab_url, gitlab_domain_slug)
145+
handle_queue(handle_merge_request_event, data, gitlab_token, gitlab_url, gitlab_url_slug)
146146
# 立马返回响应
147147
return jsonify({'message': _('Request received(object_kind={}), will process asynchronously.').format(
148148
object_kind)}), 200
149149
elif object_kind == "push":
150150
# 创建一个新进程进行异步处理
151151
# TODO check if PUSH_REVIEW_ENABLED is needed here
152-
handle_queue(handle_push_event, data, gitlab_token, gitlab_url, gitlab_domain_slug)
152+
handle_queue(handle_push_event, data, gitlab_token, gitlab_url, gitlab_url_slug)
153153
# 立马返回响应
154154
return jsonify({'message': _('Request received(object_kind={}), will process asynchronously.').format(
155155
object_kind)}), 200

biz/gitlab/webhook_handler.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,25 @@ def filter_changes(changes: list):
3434
return filtered_changes
3535

3636

37-
def slugify_url(original: str) -> str:
37+
def slugify_url(original_url: str) -> str:
38+
"""
39+
将原始URL转换为适合作为文件名的字符串,其中非字母或数字的字符会被替换为下划线,举例:
40+
slugify_url("http://example.com/path/to/repo/") => example_com_path_to_repo
41+
slugify_url("https://gitlab.com/user/repo.git") => gitlab_com_user_repo_git
42+
"""
3843
# Remove URL scheme (http, https, etc.) if present
39-
original = re.sub(r'^https?://', '', original)
44+
original_url = re.sub(r'^https?://', '', original_url)
4045

4146
# Replace non-alphanumeric characters (except underscore) with underscores
42-
target = re.sub(r'[^a-zA-Z0-9]', '_', original)
47+
target = re.sub(r'[^a-zA-Z0-9]', '_', original_url)
4348

4449
# Remove trailing underscore if present
4550
target = target.rstrip('_')
4651

4752
return target
4853

4954

55+
5056
class MergeRequestHandler:
5157
def __init__(self, webhook_data: dict, gitlab_token: str, gitlab_url: str):
5258
self.merge_request_iid = None

biz/queue/worker.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from biz.entity.review_entity import MergeRequestReviewEntity, PushReviewEntity
88
from biz.event.event_manager import event_manager
9-
from biz.gitlab.webhook_handler import filter_changes, MergeRequestHandler, PushHandler, slugify_url
9+
from biz.gitlab.webhook_handler import filter_changes, MergeRequestHandler, PushHandler
1010
from biz.utils.code_reviewer import CodeReviewer
1111
from biz.utils.im import im_notifier
1212
from biz.utils.log import logger
@@ -53,7 +53,7 @@ def handle_push_event(webhook_data: dict, gitlab_token: str, gitlab_url: str, gi
5353
commits=commits,
5454
score=score,
5555
review_result=review_result,
56-
gitlab_url_slug=gitlab_url_slug
56+
gitlab_url_slug=gitlab_url_slug,
5757
))
5858

5959
except Exception as e:
@@ -112,7 +112,7 @@ def handle_merge_request_event(webhook_data: dict, gitlab_token: str, gitlab_url
112112
score=CodeReviewer.parse_review_score(review_text=review_result),
113113
url=webhook_data['object_attributes']['url'],
114114
review_result=review_result,
115-
gitlab_url_slug= gitlab_url_slug,
115+
gitlab_url_slug=gitlab_url_slug,
116116
)
117117
)
118118

biz/utils/queue.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
if queue_driver == 'rq':
1212
queues = {}
1313

14-
def handle_queue(function: callable, data: any, gitlab_token: str, gitlab_url: str, gitlab_domain_slug: str):
14+
def handle_queue(function: callable, data: any, gitlab_token: str, gitlab_url: str, gitlab_url_slug: str):
1515
if queue_driver == 'rq':
16-
if gitlab_domain_slug not in queues:
17-
queues[gitlab_domain_slug] = Queue(gitlab_domain_slug, connection=Redis(os.getenv('REDIS_HOST', '127.0.0.1'), os.getenv('REDIS_PORT', 6379)))
16+
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)))
1818

19-
queues[gitlab_domain_slug].enqueue(function, data, gitlab_token, gitlab_url, gitlab_domain_slug)
19+
queues[gitlab_url_slug].enqueue(function, data, gitlab_token, gitlab_url, gitlab_url_slug)
2020
else:
21-
process = Process(target=function, args=(data, gitlab_token, gitlab_url, gitlab_domain_slug))
21+
process = Process(target=function, args=(data, gitlab_token, gitlab_url, gitlab_url_slug))
2222
process.start()

0 commit comments

Comments
 (0)