media-agent-mcp 2.6.6__py3-none-any.whl → 2.6.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- media_agent_mcp/async_server.py +39 -47
- {media_agent_mcp-2.6.6.dist-info → media_agent_mcp-2.6.7.dist-info}/METADATA +1 -1
- {media_agent_mcp-2.6.6.dist-info → media_agent_mcp-2.6.7.dist-info}/RECORD +6 -6
- {media_agent_mcp-2.6.6.dist-info → media_agent_mcp-2.6.7.dist-info}/WHEEL +0 -0
- {media_agent_mcp-2.6.6.dist-info → media_agent_mcp-2.6.7.dist-info}/entry_points.txt +0 -0
- {media_agent_mcp-2.6.6.dist-info → media_agent_mcp-2.6.7.dist-info}/top_level.txt +0 -0
media_agent_mcp/async_server.py
CHANGED
@@ -152,62 +152,54 @@ class RestartOnErrorMiddleware:
|
|
152
152
|
# 等待一段时间,确保日志输出
|
153
153
|
await asyncio.sleep(1)
|
154
154
|
|
155
|
-
#
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
155
|
+
# 启动新进程,使用不同的端口避免冲突
|
156
|
+
# 解析当前命令行参数以获取当前端口
|
157
|
+
temp_parser = argparse.ArgumentParser()
|
158
|
+
temp_parser.add_argument('--port', type=int, default=8000)
|
159
|
+
temp_parser.add_argument('--host', type=str, default='127.0.0.1')
|
160
|
+
temp_parser.add_argument('--transport', type=str, default='stdio')
|
161
|
+
# 添加其他可能的参数,避免解析错误
|
162
|
+
temp_parser.add_argument('--run-be', action='store_true')
|
163
|
+
temp_parser.add_argument('--be-host', type=str, default='0.0.0.0')
|
164
|
+
temp_parser.add_argument('--be-port', type=int, default=5000)
|
165
|
+
temp_parser.add_argument('--version', action='store_true')
|
160
166
|
|
161
|
-
#
|
162
|
-
|
167
|
+
# 忽略未知参数,避免解析错误
|
168
|
+
known_args, _ = temp_parser.parse_known_args(self.args)
|
163
169
|
|
164
|
-
#
|
165
|
-
|
166
|
-
|
170
|
+
# 计算新端口,当前端口+1
|
171
|
+
new_port = known_args.port + 1
|
172
|
+
logger.info(f"将使用新端口 {new_port} 启动新进程")
|
167
173
|
|
168
|
-
#
|
169
|
-
|
170
|
-
await asyncio.sleep(self.restart_cooldown)
|
174
|
+
# 准备新的命令行参数
|
175
|
+
new_args = self.args.copy()
|
171
176
|
|
172
|
-
#
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
self.
|
182
|
-
self.error_count += 1
|
177
|
+
# 如果命令行参数中有端口参数,则替换为新端口
|
178
|
+
if '--port' in new_args:
|
179
|
+
port_index = new_args.index('--port') + 1
|
180
|
+
if port_index < len(new_args):
|
181
|
+
new_args[port_index] = str(new_port)
|
182
|
+
else:
|
183
|
+
new_args.extend(['--port', str(new_port)])
|
184
|
+
|
185
|
+
logger.info(f"启动新进程: {self.script_path} {' '.join(new_args)}")
|
186
|
+
new_process = subprocess.Popen([sys.executable, self.script_path] + new_args)
|
183
187
|
|
184
|
-
|
188
|
+
# 等待确认新进程已启动
|
189
|
+
logger.info(f"等待确认新进程已启动...")
|
190
|
+
await asyncio.sleep(3)
|
185
191
|
|
186
|
-
#
|
187
|
-
if
|
188
|
-
logger.
|
189
|
-
|
190
|
-
# 启动一个新进程来重启应用
|
191
|
-
# 使用当前脚本的路径和参数
|
192
|
-
args = sys.argv.copy()
|
193
|
-
|
194
|
-
# 确保我们不会立即重启(可能导致无限循环)
|
195
|
-
logger.info(f"Cooling down for {self.restart_cooldown} seconds before restart...")
|
192
|
+
# 检查新进程是否成功启动
|
193
|
+
if new_process.poll() is None: # None表示进程仍在运行
|
194
|
+
logger.info(f"新进程成功启动,将在 {self.restart_cooldown} 秒后终止当前进程...")
|
196
195
|
await asyncio.sleep(self.restart_cooldown)
|
197
196
|
|
198
|
-
#
|
199
|
-
|
200
|
-
|
201
|
-
# 发送SIGTERM信号给当前进程
|
202
|
-
logger.info("Sending termination signal to current process...")
|
203
|
-
os.kill(os.getpid(), signal.SIGTERM)
|
204
|
-
|
205
|
-
# 等待进程终止
|
206
|
-
await asyncio.sleep(1)
|
207
|
-
|
208
|
-
# 如果进程还在运行,强制退出
|
197
|
+
# 终止当前进程
|
198
|
+
logger.info("终止当前进程")
|
209
199
|
sys.exit(0)
|
210
|
-
|
200
|
+
else:
|
201
|
+
logger.error(f"新进程启动失败,退出码: {new_process.returncode},当前进程将继续运行")
|
202
|
+
return
|
211
203
|
return
|
212
204
|
|
213
205
|
# Initialize FastMCP server (will be configured in main function)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
media_agent_mcp/__init__.py,sha256=4kV5u8kHrsdjpMHDNUhc8h4U6AwOyw1mNptFPd2snrQ,365
|
2
|
-
media_agent_mcp/async_server.py,sha256=
|
2
|
+
media_agent_mcp/async_server.py,sha256=3r_MIOFIWLiJWc068mTSy8SkzFKRdb2jlsqf0PketGU,25260
|
3
3
|
media_agent_mcp/async_wrapper.py,sha256=hiiBhhz9WeVDfSBWVh6ovhf5jeP5ZbsieBbz9P-KPn0,15351
|
4
4
|
media_agent_mcp/server.py,sha256=TAH88BDip7m3R0kNDz89RSuK6Vt8f-v8KeM5bgeSx1M,23104
|
5
5
|
media_agent_mcp/ai_models/__init__.py,sha256=2kHzTYwjQw89U4QGDq0e2WqJScqDkDNlDaWHGak5JeY,553
|
@@ -44,8 +44,8 @@ media_agent_mcp/video/__init__.py,sha256=tfz22XEeFSeuKa3AggYCE0vCDt4IwXRCKW6avof
|
|
44
44
|
media_agent_mcp/video/processor.py,sha256=twfqmN5DbVryjDawZUcqTUcnglcBJYpUbAnApqHgD0c,12787
|
45
45
|
media_agent_mcp/video/stack.py,sha256=pyoJiJ9NhU1tjy2l3kARI9sWFoC00Fj97psxYOBi2NU,1736
|
46
46
|
media_agent_mcp/video/subtitle.py,sha256=TlrWVhWJqYTUJpnVz7eccwMAn8ixfrRzRxS6ETMY-DM,16323
|
47
|
-
media_agent_mcp-2.6.
|
48
|
-
media_agent_mcp-2.6.
|
49
|
-
media_agent_mcp-2.6.
|
50
|
-
media_agent_mcp-2.6.
|
51
|
-
media_agent_mcp-2.6.
|
47
|
+
media_agent_mcp-2.6.7.dist-info/METADATA,sha256=D_OFuqAyRjmp6cZSgCb-t1nrfLhbLID0ejXBsaJ7GS4,11310
|
48
|
+
media_agent_mcp-2.6.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
49
|
+
media_agent_mcp-2.6.7.dist-info/entry_points.txt,sha256=qhOUwR-ORVf9GO7emhhl7Lgd6MISgqbZr8bEuSH_VdA,70
|
50
|
+
media_agent_mcp-2.6.7.dist-info/top_level.txt,sha256=WEa0YfchpTxZgiKn8gdxYgs-dir5HepJaTOrxAGx9nY,16
|
51
|
+
media_agent_mcp-2.6.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|