FreeSWITCH 서버에서 호출 흐름을 제어하는 ESL 서버를 작성했습니다. 문제는 연결이 닫히면 메모리 소비가 정상으로 감소하지 않는다는 것입니다. 서버에 수백 가지 연결이 이루어지면 메모리 사용량은 GB로 이동하므로 강제로 강제 종료해야합니다. 문제점을 ESLconnection 객체로 지적했습니다. 델을 사용하여 객체와 인스턴스를 삭제하려고 시도했지만 아무 소용이 없습니다. 코드는 다음과 같습니다 :python의 메모리 소비 ESL
import SocketServer
from ESL import *
import importlib
import sys
import threading
import traceback
import signal
import time
class ESLRequestHandler(SocketServer.BaseRequestHandler):
#svr_ivr_log = None
def setup(self):
fd = self.request.fileno()
self.con = ESLconnection(fd)
self.svr_ivr_log.info("Client connected: %s" % str(self.client_address))
def handle(self):
ivr_script = importlib.import_module('script')
ivr_script = reload(ivr_script)
ivr_script.process(self.con)
def finish(self):
self.con.disconnect()
ESLRequestHandler.svr_ivr_log = logging('server')
SocketServer.ThreadingTCPServer.allow_reuse_address = True
server = SocketServer.ThreadingTCPServer(('', 9090), ESLRequestHandler)
server.serve_forever()
script.py
ivrServer.py :
def process(con):
info = con.getInfo()
uuid = info.getHeader('unique-id')
con.execute('hangup', "NORMAL_CLEARING", uuid)
이것은 당신의 리눅스 버전에 대해 컴파일 freeswitch의 ESL 모듈을 필요로한다. 그렇게 할 절차를 설명해야하는지 알려주세요. 여기서 Python2.7이 사용되고 있습니다. SocketServer doc에서
, 내가 문제의 해결책을 찾지 못했기 때문이다. – user3295878