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:
parent
08a6a27eb1
commit
4c0b38ebe6
4 changed files with 21 additions and 19 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
15
server.py
15
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue