Browse Source

fix: 修改socket问题

余尚辉 4 months ago
parent
commit
c0640163dc
6 changed files with 23 additions and 18 deletions
  1. 6 4
      Dockerfile
  2. 4 1
      docker-compose.yml
  3. 2 1
      requirements.txt
  4. 3 1
      src/core/callcenter/agent.py
  5. 6 9
      src/core/callcenter/ws.py
  6. 2 2
      src/core/server.py

+ 6 - 4
Dockerfile

@@ -1,7 +1,8 @@
 FROM python:3.9
-RUN apt-get update
-RUN apt-get install -y vim wget curl sngrep
-RUN pip3 install swig cython pip setuptools --upgrade
+RUN apt-get update && \
+    apt-get install -y vim wget curl sngrep && \
+    pip3 install swig cython pip setuptools --upgrade
+
 
 WORKDIR /code
 ADD . .
@@ -18,5 +19,6 @@ RUN pip install -r requirements.txt
 RUN pip install flask_sqlalchemy
 
 EXPOSE 8000
-CMD ["gunicorn", "-w 1", "-b 0.0.0.0:8000", "src.core.server:app"]
+#CMD ["gunicorn", "-w 1", "-b 0.0.0.0:8000", "src.core.server:app"]
+CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "--worker-class", "eventlet", "src.core.server:app"]
 #CMD ["tail", "-f", "/dev/null"]

+ 4 - 1
docker-compose.yml

@@ -1,9 +1,12 @@
 services:
   pjsua:
-    image: pjsua2:v2.14.1106
+    image: pjsua2:v2.14.1107
     container_name: pjsua
     restart: always
     network_mode: host
+    ports:
+      - 8000:8000
+      - 8084:8084
     volumes:
       - /home/hongshan/voice-gateway-service:/code
     environment:

+ 2 - 1
requirements.txt

@@ -5,4 +5,5 @@ mmh3
 apscheduler
 gunicorn
 pymysql
-redis
+redis
+eventlet

+ 3 - 1
src/core/callcenter/agent.py

@@ -59,9 +59,11 @@ class AgentOperService:
            if not agent or agent.agent_state == AgentState.DISABLE.code:
                raise BizException(BizErrorCode.ERROR_NOT_FOLLOW_CHECK_IN)
            phone = _get_phone(req.saas_id, agent.phone_num)
+           print('debug1111111')
            agent_monitor = _get_agent_monitor(req.saas_id, agent.agent_num)
-
+           print('debug222222')
            agent_monitor.check_scene = req.scene
+           print('debug333333')
            self.agent_monitor_service.update_checkin(agent_monitor)
            self.agent_actionlog_service.insert_check_state(agent_monitor, AgentCheck.IN, AgentLogState.CHECKIN)
            self.agent_state_service.checkin(agent.saas_id, agent.out_id, agent.phone_num)

+ 6 - 9
src/core/callcenter/ws.py

@@ -5,7 +5,7 @@ from src.core.callcenter.views import app
 from flask import request, session
 from flask_socketio import SocketIO, Namespace, join_room, leave_room, emit
 
-socketio = SocketIO(app, cors_allowed_origins="*")
+socketio = SocketIO(app,  async_mode='eventlet', cors_allowed_origins="*")
 
 
 def common_down_data(user_id, data, namespace='/ws/cs-im'):
@@ -22,14 +22,11 @@ class MyNamespace(Namespace):
         print('Client connected, ', request.sid)
 
     def on_login(self, msg):
-        try:
-            print('login.Received message: {}, {}', str(msg), request.sid)
-            user_id = msg.get('userId')
-            session['user_id'] = user_id
-            join_room(user_id)
-            emit('login', request.sid)
-        except Exception as e:
-            print('login.err message: {}', e)
+        print('login.Received message: {}, {}', str(msg), request.sid)
+        user_id = msg.get('userId')
+        session['user_id'] = user_id
+        join_room(user_id)
+        emit('login', request.sid)
 
     def on_heartbeat(self, heartbeat):
         pass

+ 2 - 2
src/core/server.py

@@ -3,9 +3,9 @@
 
 from src.core.callcenter.views import app
 from src.core.callcenter.ws import socketio
-import multiprocessing as mp
+import multiprocessing
 
 if __name__ == '__main__':
-    mp.set_start_method('spawn', force=True)
+    multiprocessing.set_start_method('spawn')
     socketio.run(app, host='0.0.0.0', port=8000, allow_unsafe_werkzeug=True, debug=True)
     # app.run(host='0.0.0.0', port=8000, debug=True)