diff --git a/app/service/service_client.py b/app/service/service_client.py index 534285e..4641b6a 100644 --- a/app/service/service_client.py +++ b/app/service/service_client.py @@ -4,6 +4,7 @@ from pyfastocloud.fastocloud_client import FastoCloudClient, Fields, Commands from pyfastocloud.client_handler import IClientHandler from pyfastocloud.json_rpc import Request, Response from pyfastocloud.client_constants import ClientStatus +import pyfastocloud.socket.gevent as gsocket from app.service.stream_handler import IStreamHandler import app.common.constants as constants @@ -44,7 +45,7 @@ class ServiceClient(IClientHandler): self.id = sid self._request_id = 0 self._handler = handler - self._client = FastoCloudClient(host, port, self) + self._client = FastoCloudClient(host, port, self, gsocket) self._set_runtime_fields() def connect(self): @@ -192,10 +193,7 @@ class ServiceClient(IClientHandler): self._handler.on_client_state_changed(status) # private - def _set_runtime_fields(self, http_host=None, vods_host=None, cods_host=None, - version=None, - os=None, - vods_in=None): + def _set_runtime_fields(self, http_host=None, vods_host=None, cods_host=None, version=None, os=None, vods_in=None): self._http_host = http_host self._vods_host = vods_host self._cods_host = cods_host diff --git a/app/service/subscriber_client.py b/app/service/subscriber_client.py index 7b563df..b81ec71 100644 --- a/app/service/subscriber_client.py +++ b/app/service/subscriber_client.py @@ -1,11 +1,12 @@ from app.common.subscriber.entry import Subscriber, Device from pyfastocloud.subscriber_client import SubscriberClient from pyfastocloud.client import make_utc_timestamp +import pyfastocloud.socket.gevent as gsocket class SubscriberConnection(SubscriberClient): def __init__(self, sock, addr, handler): - super(SubscriberConnection, self).__init__(sock, addr, handler) + super(SubscriberConnection, self).__init__(sock, addr, handler, gsocket) self._info = None self._current_stream_id = str() self._device = None diff --git a/app/service/subscribers_service_manager.py b/app/service/subscribers_service_manager.py index 27cf978..0de9dad 100644 --- a/app/service/subscribers_service_manager.py +++ b/app/service/subscribers_service_manager.py @@ -1,3 +1,6 @@ +import logging +import socket + from app.service.service_manager import ServiceManager from app.service.subscriber_client import SubscriberConnection @@ -6,17 +9,12 @@ from app.common.constants import PlayerMessage from pyfastocloud.subscriber_client import Commands from pyfastocloud.client import make_utc_timestamp from pyfastocloud.client_handler import IClientHandler, Request, Response, ClientStatus - -from gevent import socket -from gevent import select - -import logging +import pyfastocloud.socket.gevent as gsocket def check_is_auth_client(client) -> bool: if not client: return False - return client.is_active() @@ -27,7 +25,7 @@ class SubscribersServiceManager(ServiceManager, IClientHandler): def __init__(self, host: str, port: int, socketio): super(SubscribersServiceManager, self).__init__(host, port, socketio) - serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + serversock = gsocket.Socket(socket.AF_INET, socket.SOCK_STREAM) serversock.bind((host, SubscribersServiceManager.SUBSCRIBER_PORT)) serversock.listen(10) self._subscribers_server_socket = serversock @@ -47,7 +45,7 @@ class SubscribersServiceManager(ServiceManager, IClientHandler): if server.is_connected(): rsockets.append(server.socket()) - readable, writeable, _ = select.select(rsockets, [], [], 1) + readable, writeable, _ = gsocket.Select(rsockets, [], [], 1) ts_sec = make_utc_timestamp() / 1000 for read in readable: # income subscriber connection diff --git a/server.py b/server.py index 398cff5..ce13b0f 100755 --- a/server.py +++ b/server.py @@ -1,13 +1,16 @@ #!/usr/bin/env python3 -from app import app, servers_manager +import logging import argparse -from gevent.pywsgi import WSGIServer import gevent +from gevent.pywsgi import WSGIServer -PROJECT_NAME = 'iptv_admin' +from app import app, servers_manager + +PROJECT_NAME = 'fastocloud_iptv_admin' HOST = '0.0.0.0' PORT = 8080 +LOGS_PATH = PROJECT_NAME + '.log' def servers_refresh(): @@ -18,10 +21,12 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog=PROJECT_NAME, usage='%(prog)s [options]') parser.add_argument('--port', help='port (default: {0})'.format(PORT), default=PORT) parser.add_argument('--host', help='host (default: {0})'.format(HOST), default=HOST) + parser.add_argument('--logs_path', help='logs path (default: {0})'.format(LOGS_PATH), default=LOGS_PATH) + argv = parser.parse_args() - import logging - logging.basicConfig(filename='admin.log', filemode='w', level=logging.DEBUG, format='%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%H:%M:%S') + logging.basicConfig(filename=argv.logs_path, filemode='a', level=logging.DEBUG, + format='%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%H:%M:%S') http_server = WSGIServer((argv.host, argv.port), app) srv_greenlet = gevent.spawn(http_server.serve_forever)