refactor: 使用假端口实现调度器单例控制
- 恢复 agentmain.py 到原始状态 - launch.pyw 使用端口 65432 检测单例 - 避免重复启动调度器实例
This commit is contained in:
25
agentmain.py
25
agentmain.py
@@ -110,33 +110,8 @@ class GeneraticAgent:
|
||||
if self.handler is not None: self.handler.code_stop_signal.append(1)
|
||||
|
||||
|
||||
def acquire_singleton_lock():
|
||||
"""确保只有一个调度器实例运行"""
|
||||
lock_file = './temp/scheduler.lock'
|
||||
os.makedirs('./temp', exist_ok=True)
|
||||
|
||||
if os.name == 'nt': # Windows
|
||||
import msvcrt
|
||||
try:
|
||||
lock_fd = open(lock_file, 'w')
|
||||
msvcrt.locking(lock_fd.fileno(), msvcrt.LK_NBLCK, 1)
|
||||
return lock_fd
|
||||
except:
|
||||
print('[Scheduler] Another instance is already running')
|
||||
sys.exit(0)
|
||||
else: # Unix/Linux
|
||||
import fcntl
|
||||
try:
|
||||
lock_fd = open(lock_file, 'w')
|
||||
fcntl.flock(lock_fd.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
|
||||
return lock_fd
|
||||
except:
|
||||
print('[Scheduler] Another instance is already running')
|
||||
sys.exit(0)
|
||||
|
||||
if __name__ == '__main__':
|
||||
from datetime import datetime
|
||||
lock_fd = acquire_singleton_lock() # 获取单例锁
|
||||
agent = GeneraticAgent()
|
||||
threading.Thread(target=agent.run, daemon=True).start()
|
||||
def drain(dq, tag):
|
||||
|
||||
Reference in New Issue
Block a user