1
0
Fork 0
mirror of https://github.com/fastogt/fastocloud_admin.git synced 2025-03-09 23:38:52 +00:00

Sock impl

This commit is contained in:
topilski 2019-09-05 03:38:27 -04:00
parent 08a6a27eb1
commit 4c0b38ebe6
4 changed files with 21 additions and 19 deletions

View file

@ -4,6 +4,7 @@ from pyfastocloud.fastocloud_client import FastoCloudClient, Fields, Commands
from pyfastocloud.client_handler import IClientHandler from pyfastocloud.client_handler import IClientHandler
from pyfastocloud.json_rpc import Request, Response from pyfastocloud.json_rpc import Request, Response
from pyfastocloud.client_constants import ClientStatus from pyfastocloud.client_constants import ClientStatus
import pyfastocloud.socket.gevent as gsocket
from app.service.stream_handler import IStreamHandler from app.service.stream_handler import IStreamHandler
import app.common.constants as constants import app.common.constants as constants
@ -44,7 +45,7 @@ class ServiceClient(IClientHandler):
self.id = sid self.id = sid
self._request_id = 0 self._request_id = 0
self._handler = handler self._handler = handler
self._client = FastoCloudClient(host, port, self) self._client = FastoCloudClient(host, port, self, gsocket)
self._set_runtime_fields() self._set_runtime_fields()
def connect(self): def connect(self):
@ -192,10 +193,7 @@ class ServiceClient(IClientHandler):
self._handler.on_client_state_changed(status) self._handler.on_client_state_changed(status)
# private # private
def _set_runtime_fields(self, http_host=None, vods_host=None, cods_host=None, def _set_runtime_fields(self, http_host=None, vods_host=None, cods_host=None, version=None, os=None, vods_in=None):
version=None,
os=None,
vods_in=None):
self._http_host = http_host self._http_host = http_host
self._vods_host = vods_host self._vods_host = vods_host
self._cods_host = cods_host self._cods_host = cods_host

View file

@ -1,11 +1,12 @@
from app.common.subscriber.entry import Subscriber, Device from app.common.subscriber.entry import Subscriber, Device
from pyfastocloud.subscriber_client import SubscriberClient from pyfastocloud.subscriber_client import SubscriberClient
from pyfastocloud.client import make_utc_timestamp from pyfastocloud.client import make_utc_timestamp
import pyfastocloud.socket.gevent as gsocket
class SubscriberConnection(SubscriberClient): class SubscriberConnection(SubscriberClient):
def __init__(self, sock, addr, handler): 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._info = None
self._current_stream_id = str() self._current_stream_id = str()
self._device = None self._device = None

View file

@ -1,3 +1,6 @@
import logging
import socket
from app.service.service_manager import ServiceManager from app.service.service_manager import ServiceManager
from app.service.subscriber_client import SubscriberConnection 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.subscriber_client import Commands
from pyfastocloud.client import make_utc_timestamp from pyfastocloud.client import make_utc_timestamp
from pyfastocloud.client_handler import IClientHandler, Request, Response, ClientStatus from pyfastocloud.client_handler import IClientHandler, Request, Response, ClientStatus
import pyfastocloud.socket.gevent as gsocket
from gevent import socket
from gevent import select
import logging
def check_is_auth_client(client) -> bool: def check_is_auth_client(client) -> bool:
if not client: if not client:
return False return False
return client.is_active() return client.is_active()
@ -27,7 +25,7 @@ class SubscribersServiceManager(ServiceManager, IClientHandler):
def __init__(self, host: str, port: int, socketio): def __init__(self, host: str, port: int, socketio):
super(SubscribersServiceManager, self).__init__(host, port, 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.bind((host, SubscribersServiceManager.SUBSCRIBER_PORT))
serversock.listen(10) serversock.listen(10)
self._subscribers_server_socket = serversock self._subscribers_server_socket = serversock
@ -47,7 +45,7 @@ class SubscribersServiceManager(ServiceManager, IClientHandler):
if server.is_connected(): if server.is_connected():
rsockets.append(server.socket()) rsockets.append(server.socket())
readable, writeable, _ = select.select(rsockets, [], [], 1) readable, writeable, _ = gsocket.Select(rsockets, [], [], 1)
ts_sec = make_utc_timestamp() / 1000 ts_sec = make_utc_timestamp() / 1000
for read in readable: for read in readable:
# income subscriber connection # income subscriber connection

View file

@ -1,13 +1,16 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from app import app, servers_manager import logging
import argparse import argparse
from gevent.pywsgi import WSGIServer
import gevent 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' HOST = '0.0.0.0'
PORT = 8080 PORT = 8080
LOGS_PATH = PROJECT_NAME + '.log'
def servers_refresh(): def servers_refresh():
@ -18,10 +21,12 @@ if __name__ == '__main__':
parser = argparse.ArgumentParser(prog=PROJECT_NAME, usage='%(prog)s [options]') 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('--port', help='port (default: {0})'.format(PORT), default=PORT)
parser.add_argument('--host', help='host (default: {0})'.format(HOST), default=HOST) 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() argv = parser.parse_args()
import logging logging.basicConfig(filename=argv.logs_path, filemode='a', level=logging.DEBUG,
logging.basicConfig(filename='admin.log', filemode='w', level=logging.DEBUG, format='%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%H:%M:%S') format='%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s', datefmt='%H:%M:%S')
http_server = WSGIServer((argv.host, argv.port), app) http_server = WSGIServer((argv.host, argv.port), app)
srv_greenlet = gevent.spawn(http_server.serve_forever) srv_greenlet = gevent.spawn(http_server.serve_forever)