wangdongxu

jira:NYJ-1550 desc:football replay match

@@ -16,7 +16,6 @@ dependencies = [ @@ -16,7 +16,6 @@ dependencies = [
16 "aabd==0.4.3", 16 "aabd==0.4.3",
17 "path==17.1.1", 17 "path==17.1.1",
18 "omegaconf==2.3.0", 18 "omegaconf==2.3.0",
19 - "elasticsearch>=9.3.0",  
20 "packaging==26.0", 19 "packaging==26.0",
21 ] 20 ]
22 21
@@ -25,6 +24,9 @@ dependencies = [ @@ -25,6 +24,9 @@ dependencies = [
25 embedding = [ 24 embedding = [
26 "elasticsearch==9.3.0", 25 "elasticsearch==9.3.0",
27 ] 26 ]
  27 +football-replay-match = [
  28 + "confluent_kafka==2.6.1",
  29 +]
28 # task-server 专用依赖 30 # task-server 专用依赖
29 task = [ 31 task = [
30 32
@@ -39,3 +41,4 @@ packages = ["src/embedding_sever"] @@ -39,3 +41,4 @@ packages = ["src/embedding_sever"]
39 [project.scripts] 41 [project.scripts]
40 embedding-server = "embedding_sever.main:main" 42 embedding-server = "embedding_sever.main:main"
41 #task-server = "task_server.main:main" 43 #task-server = "task_server.main:main"
  44 +football-repaly-match-server = "football_replay_match.main:main"
1 input_kafka: 1 input_kafka:
2 servers: 192.168.0.14:9092 2 servers: 192.168.0.14:9092
3 group_id: ai_match_service 3 group_id: ai_match_service
4 - topic: football_replay_match 4 + topic: football_replay_match_req
5 # username: xxx 5 # username: xxx
6 # password: xxx 6 # password: xxx
7 7
8 output_kafka: 8 output_kafka:
9 servers: 192.168.0.14:9092 9 servers: 192.168.0.14:9092
10 - topic: football_replay_match 10 + topic: football_replay_match_resp
  1 +class Video2Frame:
  2 + def __init__(self, cache_dir):
  3 + pass
  4 +
  5 + def to_frames(self, url, start_utc, end_utc, fps, roi=None, max_px_area=None) -> list:
  6 + pass
  7 +
  8 +
  9 +def frames2content(frames):
  10 + return
1 -import json  
2 -import time  
3 -  
4 from aabd.base.patched_logging import init_logging, get_logger 1 from aabd.base.patched_logging import init_logging, get_logger
5 2
6 init_logging() 3 init_logging()
7 logger = get_logger(__name__) 4 logger = get_logger(__name__)
  5 +import json
  6 +import time
  7 +
  8 +try:
  9 + from config import settings
  10 +except:
  11 + from .config import settings
  12 +
  13 + pass
  14 +try:
  15 + from .core.api import replay_match_event
  16 +except:
  17 + from core.api import replay_match_event
  18 +
  19 + pass
  20 +
8 from threading import Thread 21 from threading import Thread
9 -from .core.api import replay_match_event  
10 22
11 from aabd.mq.kafka_client import KafkaMessageIterator, KafkaProducer 23 from aabd.mq.kafka_client import KafkaMessageIterator, KafkaProducer
12 24
@@ -49,9 +61,7 @@ def kafka_message_iterator_thread(message_iterator, config, callback_func): @@ -49,9 +61,7 @@ def kafka_message_iterator_thread(message_iterator, config, callback_func):
49 logger.exception(f"Error processing message: {message}") 61 logger.exception(f"Error processing message: {message}")
50 62
51 63
52 -if __name__ == '__main__':  
53 - from config import settings  
54 - 64 +def main():
55 message_iter = get_message_iterator(settings.input_kafka) 65 message_iter = get_message_iterator(settings.input_kafka)
56 kafka_producer = get_message_producer(settings.output_kafka) 66 kafka_producer = get_message_producer(settings.output_kafka)
57 try: 67 try:
@@ -63,3 +73,7 @@ if __name__ == '__main__': @@ -63,3 +73,7 @@ if __name__ == '__main__':
63 except KeyboardInterrupt: 73 except KeyboardInterrupt:
64 message_iter.running = False 74 message_iter.running = False
65 kafka_producer.close() 75 kafka_producer.close()
  76 +
  77 +
  78 +if __name__ == '__main__':
  79 + main()
@@ -18,7 +18,6 @@ source = { editable = "." } @@ -18,7 +18,6 @@ source = { editable = "." }
18 dependencies = [ 18 dependencies = [
19 { name = "aabd" }, 19 { name = "aabd" },
20 { name = "aiohttp" }, 20 { name = "aiohttp" },
21 - { name = "elasticsearch" },  
22 { name = "fastapi" }, 21 { name = "fastapi" },
23 { name = "numpy" }, 22 { name = "numpy" },
24 { name = "omegaconf" }, 23 { name = "omegaconf" },
@@ -32,12 +31,15 @@ dependencies = [ @@ -32,12 +31,15 @@ dependencies = [
32 embedding = [ 31 embedding = [
33 { name = "elasticsearch" }, 32 { name = "elasticsearch" },
34 ] 33 ]
  34 +football-replay-match = [
  35 + { name = "confluent-kafka" },
  36 +]
35 37
36 [package.metadata] 38 [package.metadata]
37 requires-dist = [ 39 requires-dist = [
38 { name = "aabd", specifier = "==0.4.3" }, 40 { name = "aabd", specifier = "==0.4.3" },
39 { name = "aiohttp", specifier = ">=3.8.0" }, 41 { name = "aiohttp", specifier = ">=3.8.0" },
40 - { name = "elasticsearch", specifier = ">=9.3.0" }, 42 + { name = "confluent-kafka", marker = "extra == 'football-replay-match'", specifier = "==2.6.1" },
41 { name = "elasticsearch", marker = "extra == 'embedding'", specifier = "==9.3.0" }, 43 { name = "elasticsearch", marker = "extra == 'embedding'", specifier = "==9.3.0" },
42 { name = "fastapi", specifier = "==0.135.3" }, 44 { name = "fastapi", specifier = "==0.135.3" },
43 { name = "numpy", specifier = ">=1.24.0" }, 45 { name = "numpy", specifier = ">=1.24.0" },
@@ -47,7 +49,7 @@ requires-dist = [ @@ -47,7 +49,7 @@ requires-dist = [
47 { name = "pydantic", specifier = "==2.12.5" }, 49 { name = "pydantic", specifier = "==2.12.5" },
48 { name = "uvicorn", extras = ["standard"], specifier = "==0.42.0" }, 50 { name = "uvicorn", extras = ["standard"], specifier = "==0.42.0" },
49 ] 51 ]
50 -provides-extras = ["embedding", "task"] 52 +provides-extras = ["embedding", "football-replay-match", "task"]
51 53
52 [[package]] 54 [[package]]
53 name = "aiohappyeyeballs" 55 name = "aiohappyeyeballs"
@@ -233,6 +235,24 @@ wheels = [ @@ -233,6 +235,24 @@ wheels = [
233 ] 235 ]
234 236
235 [[package]] 237 [[package]]
  238 +name = "confluent-kafka"
  239 +version = "2.6.1"
  240 +source = { registry = "https://pypi.org/simple" }
  241 +sdist = { url = "https://files.pythonhosted.org/packages/13/89/928e6886ba33f5847692430d003dc33f81a6e595d25f9935d6185ea073d3/confluent_kafka-2.6.1.tar.gz", hash = "sha256:71fdab0f65ccdb00eff0f14ccde65723ebbd20392723f8c1e87e5d8ab29e50cf", size = 160019, upload-time = "2024-11-18T18:53:02.559Z" }
  242 +wheels = [
  243 + { url = "https://files.pythonhosted.org/packages/60/1d/ce01ed336e2724410e083970528aacdf448757d87607be183d8a745ba1bd/confluent_kafka-2.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a5062f24f3af27f6edd63cb71a663144de09dd3249647c80c4aec9655a0ea1dd", size = 3441316, upload-time = "2024-11-18T18:51:27.137Z" },
  244 + { url = "https://files.pythonhosted.org/packages/bd/87/1854e3fca1aa02c28ca69b2df844523854c020d2cf4757e40f5f70060c59/confluent_kafka-2.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a21b712b17362fd0602faa87c4363bd604f271ca62076bcf2d83ca91d2bd62c2", size = 2967136, upload-time = "2024-11-18T18:51:29.997Z" },
  245 + { url = "https://files.pythonhosted.org/packages/d3/a0/598aff8b2249f6f73471257898ba44188fa5096cb95fa89468cc6cb33518/confluent_kafka-2.6.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0c2b63f7f764dc504296a8a474a3f09e408a456626cf938635eb31f59cac59fa", size = 15282347, upload-time = "2024-11-18T18:51:36.539Z" },
  246 + { url = "https://files.pythonhosted.org/packages/05/44/b387e65fa2a9ef73adbc10fb2e81d0daed9a76bd5492a15a7321a69809c9/confluent_kafka-2.6.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:298aa323eb8507862ccfa619367667b41ab76ddf3657e8a45dafe4b270208257", size = 3954077, upload-time = "2024-11-18T18:51:40.57Z" },
  247 + { url = "https://files.pythonhosted.org/packages/0e/68/d7618aa37c343d2b918704aff5b05bda7d2329c3493163247e4d5cb75a1e/confluent_kafka-2.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b17da915fc35b1bef49d599f685656f65f379094dbbc7aafc5ede1843cc72699", size = 3889112, upload-time = "2024-11-18T18:51:43.573Z" },
  248 + { url = "https://files.pythonhosted.org/packages/8c/cf/b5d0124b143a98c7bc0ecd638f12a05db9c1ba173349d0bf22e23ac559a4/confluent_kafka-2.6.1-cp313-cp313-macosx_13_0_arm64.whl", hash = "sha256:2584812d8834932e194929544d09325dd09039223aced7ab09095ffd4e96a1ca", size = 2968528, upload-time = "2024-11-18T18:51:46.158Z" },
  249 + { url = "https://files.pythonhosted.org/packages/7d/fc/4e3e5c492111d8d4444888f0503a8cebdfca70fbe64e63be8cea41de88d1/confluent_kafka-2.6.1-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:90853bbf466c57e0295076549b9b3b9cb6ab9447965977f3cde7f0790c39b5d6", size = 3441632, upload-time = "2024-11-18T18:51:48.642Z" },
  250 + { url = "https://files.pythonhosted.org/packages/1f/5b/d4963bf090a8ae0712d83163f43a018297216a2cb4d0c28a422c2a0c254b/confluent_kafka-2.6.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:8c38bf716dbf99bd0e84ba867417e397c4d544d37a530b28df6cadd227a57f98", size = 15281866, upload-time = "2024-11-18T18:51:55.536Z" },
  251 + { url = "https://files.pythonhosted.org/packages/ab/71/bd85b6b0e30227d722649a180de3459d3360cc01380f370651ff18d4dba1/confluent_kafka-2.6.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:efc94016d3b438f0af2ddd3f5a8fb293616fda296644f341161033b24282b23d", size = 3953827, upload-time = "2024-11-18T18:51:59.301Z" },
  252 + { url = "https://files.pythonhosted.org/packages/b6/eb/042c083e0d0a5016559dda61fb060e1c9be4fe540c95898c35a9fd540762/confluent_kafka-2.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:150735910da42c44f7fa21ad96e3ae0f52df34066f163d3f544001a64ea776d2", size = 3948805, upload-time = "2024-11-18T18:52:02.158Z" },
  253 +]
  254 +
  255 +[[package]]
236 name = "elastic-transport" 256 name = "elastic-transport"
237 version = "9.2.1" 257 version = "9.2.1"
238 source = { registry = "https://pypi.org/simple" } 258 source = { registry = "https://pypi.org/simple" }