示例#1
0
文件: __init__.py 项目: Prpht/GUPB
import asyncio
import os
import selectors

selector = selectors.SelectSelector()
loop = asyncio.SelectorEventLoop(selector)
asyncio.set_event_loop(loop)

os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = '1'
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
示例#2
0
        def _sendfile_use_sendfile(self, file, offset=0, count=None):
            self._check_sendfile_params(file, offset, count)
            sockno = self.fileno()
            try:
                fileno = file.fileno()
            except (AttributeError, io.UnsupportedOperation) as err:
                raise _GiveupOnSendfile(err)  # not a regular file
            try:
                fsize = os.fstat(fileno).st_size
            except OSError as err:
                raise _GiveupOnSendfile(err)  # not a regular file
            if not fsize:
                return 0  # empty file
            blocksize = fsize if not count else count

            timeout = self.gettimeout()
            if timeout == 0:
                raise ValueError("non-blocking sockets are not supported")
            # poll/select have the advantage of not requiring any
            # extra file descriptor, contrarily to epoll/kqueue
            # (also, they require a single syscall).
            if hasattr(selectors, 'PollSelector'):
                selector = selectors.PollSelector()
            else:
                selector = selectors.SelectSelector()
            selector.register(sockno, selectors.EVENT_WRITE)

            total_sent = 0
            # localize variable access to minimize overhead
            selector_select = selector.select
            os_sendfile = os.sendfile
            try:
                while True:
                    if timeout and not selector_select(timeout):
                        raise _socket.timeout('timed out')
                    if count:
                        blocksize = count - total_sent
                        if blocksize <= 0:
                            break
                    try:
                        sent = os_sendfile(sockno, fileno, offset, blocksize)
                    except BlockingIOError:
                        if not timeout:
                            # Block until the socket is ready to send some
                            # data; avoids hogging CPU resources.
                            selector_select()
                        continue
                    except OSError as err:
                        if total_sent == 0:
                            # We can get here for different reasons, the main
                            # one being 'file' is not a regular mmap(2)-like
                            # file, in which case we'll fall back on using
                            # plain send().
                            raise _GiveupOnSendfile(err)
                        raise err from None
                    else:
                        if sent == 0:
                            break  # EOF
                        offset += sent
                        total_sent += sent
                return total_sent
            finally:
                if total_sent > 0 and hasattr(file, 'seek'):
                    file.seek(offset)
示例#3
0
from multiprocessing import freeze_support
from prompt_toolkit import PromptSession, HTML
from prompt_toolkit.completion import WordCompleter, NestedCompleter
from distutils.version import StrictVersion
from CB import HEADERS, HEADLESS_TERMINAL_THEME, __version__
from CB.Core import Core
from CB.Compat import pause, timeout, clear, set_terminal_title, set_terminal_size, getch, kbhit
from CB.Wago import WagoUpdater

if platform.system() == 'Windows':
    from ctypes import windll, wintypes

# FIXME - Python bug #39010 - Fixed in 3.8.6/3.9
import asyncio
import selectors
asyncio.set_event_loop(asyncio.SelectorEventLoop(selectors.SelectSelector()))


class TUI:
    def __init__(self):
        self.core = Core()
        self.session = PromptSession(reserve_space_for_menu=6,
                                     complete_in_thread=True)
        self.headless = False
        self.console = None
        self.table = None
        self.cfSlugs = None
        self.wowiSlugs = None
        self.completer = None
        self.os = platform.system()
        install()
示例#4
0
 def create_event_loop(self):
     return asyncio.SelectorEventLoop(selectors.SelectSelector())
示例#5
0
        def _sendfile_use_sendfile(self, file, offset=0, count=None):
            self._check_sendfile_params(file, offset, count)
            sockno = self.fileno()
            try:
                fileno = file.fileno()
            except (AttributeError, io.UnsupportedOperation) as err:
                try:
                    raise _GiveupOnSendfile(err)
                finally:
                    err = None
                    del err

            try:
                fsize = os.fstat(fileno).st_size
            except OSError as err:
                try:
                    raise _GiveupOnSendfile(err)
                finally:
                    err = None
                    del err

            if not fsize:
                return 0
            blocksize = fsize if not count else count
            timeout = self.gettimeout()
            if timeout == 0:
                raise ValueError('non-blocking sockets are not supported')
            if hasattr(selectors, 'PollSelector'):
                selector = selectors.PollSelector()
            else:
                selector = selectors.SelectSelector()
            selector.register(sockno, selectors.EVENT_WRITE)
            total_sent = 0
            selector_select = selector.select
            os_sendfile = os.sendfile
            try:
                while 1:
                    if timeout:
                        pass
                    if not selector_select(timeout):
                        raise _socket.timeout('timed out')
                    if count:
                        blocksize = count - total_sent
                        if blocksize <= 0:
                            break
                        try:
                            sent = os_sendfile(sockno, fileno, offset,
                                               blocksize)
                        except BlockingIOError:
                            if not timeout:
                                selector_select()
                            continue
                        except OSError as err:
                            try:
                                if total_sent == 0:
                                    raise _GiveupOnSendfile(err)
                                raise err from None
                            finally:
                                err = None
                                del err

                        else:
                            if sent == 0:
                                break
                        offset += sent
                        total_sent += sent

                return total_sent
            finally:
                if total_sent > 0:
                    pass
                if hasattr(file, 'seek'):
                    file.seek(offset)
示例#6
0

ARGS = argparse.ArgumentParser(
    description="websocket console client for wssrv.py example.")
ARGS.add_argument('--host',
                  action="store",
                  dest='host',
                  default='127.0.0.1',
                  help='Host name')
ARGS.add_argument('--port',
                  action="store",
                  dest='port',
                  default=8080,
                  type=int,
                  help='Port number')

if __name__ == '__main__':
    args = ARGS.parse_args()
    if ':' in args.host:
        args.host, port = args.host.split(':', 1)
        args.port = int(port)

    url = 'http://{}:{}'.format(args.host, args.port)

    loop = asyncio.SelectorEventLoop(selectors.SelectSelector())
    asyncio.set_event_loop(loop)

    loop.add_signal_handler(signal.SIGINT, loop.stop)
    asyncio.Task(start_client(loop, url))
    loop.run_forever()
示例#7
0
import socket
import selectors
import time

Socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

Socket.bind(('127.0.0.1', 8000))
print('Binding socket at : 127.0.0.1:8000')

Socket.listen(5)
print('Start Listening...')

_exit = False

with selectors.SelectSelector() as selector:
    selector.register(Socket, selectors.EVENT_READ)

    while not _exit:
        ready = selector.select(0.5)

        if ready:
            request, client_address = Socket.accept()
            data = request.recv(1024).decode('utf-8')
            print(data)
            request.send(('[%s]Received : %s' % (time.ctime(), data)).encode())
示例#8
0
文件: ws.py 项目: Elegond/monitoring
    def run(self):
        global threadloops
        if self.name == "CPU":  # CPU Thread
            global CPU
            while threadloops:
                try:
                    if not sensor.cfg["CPU"][
                            "enabled"]:  # Wenn der Sensor abgeschaltet ist wird der Thread beended
                        CPU = {"cpu": {"enabled": False}}
                        break

                    CPU = sensor.get_cpu(
                    )  # Setzt die aktuellen werte in die liste
                    i = 0
                    for cpu in CPU["cpu"]["use"]:
                        i += cpu
                    last = i / len(CPU["cpu"]["use"])
                    sensor.check_for_log("CPU", round(
                        last,
                        2))  # überprüft ob die CPU insgesammt über einen der
                    # Alert werte liegt

                except:
                    if sensor.cfg is None:  # wenn die Config nicht richtig geladen ist muss sie gesetzt werden
                        sensor.cfg = sensor.read_config(sensor.config())

                time.sleep(
                    sleep - 1
                )  # Die CPU braucht 1 Sekunde um die Last zu messen deswegen wird -1 gerechnet

        elif self.name == "MEM":  # RAM Thread
            global MEM
            while threadloops:
                try:
                    if not sensor.cfg["MEM"][
                            "enabled"]:  # Wenn der Sensor abgeschaltet ist wird der Thread beended
                        MEM = {"mem": {"enabled": False}}
                        break
                    MEM = sensor.get_memory(
                    )  # Setzt die aktuellen werte in die liste
                    sensor.check_for_log("MEM", round(
                        MEM["mem"]["used"],
                        2))  # überprüft ob die auslastung über einen
                    # der Alert werte liegt
                except:
                    if sensor.cfg is None:
                        sensor.cfg = sensor.read_config(sensor.config())

                time.sleep(sleep)

        elif self.name == "DISK":  # Disk Thread
            global DISK
            while threadloops:
                try:
                    DISK = sensor.get_all_drives(
                    )  # Setzt die aktuellen werte in die liste
                    for d in DISK["speicher"]:
                        sensor.check_for_log(
                            d, round(float(DISK["speicher"][d]["used"][2]),
                                     2))  # überprüft ob die
                        # auslastung über einen der Alert werte liegt
                except:
                    if sensor.cfg is None:
                        sensor.cfg = sensor.read_config(sensor.config())
                time.sleep(sleep)

        elif self.name == "SEND":  # Websocket Client Thread ( siehe def send() )
            global clientloop
            time.sleep(3)
            while threadloops:
                try:
                    ### Bugfix für windows 3.8 eventloop in thread
                    selector = selectors.SelectSelector()
                    clientloop = asyncio.SelectorEventLoop(selector)
                    asyncio.set_event_loop(clientloop)
                    ###
                    asyncio.get_event_loop().run_until_complete(
                        send(self))  # Startet den Websocket Client
                except Exception as e:
                    if not "code = 1006" in str(e):
                        sensor.log_event(
                            "WEBSOCKET Client", 9, "Client Killed " + str(e)
                        )  # Schreibt eventuelle errors in die logdatei
                    time.sleep(1)

        elif self.name == "WEBSOCK":  # Websocket Server Thread
            global serverloop
            time.sleep(1)
            while threadloops:
                try:
                    ### Bugfix für windows 3.8 eventloop in thread
                    selector = selectors.SelectSelector()
                    serverloop = asyncio.SelectorEventLoop(selector)
                    asyncio.set_event_loop(serverloop)
                    ###

                    # schreibt die websocket Server adresse in den Log
                    sensor.log_event(
                        "WEBSOCKET", 9, 'ws://' + sensor.cfg["ws"]["ip"] +
                        ":" + str(sensor.cfg["ws"]["port"]))

                    start_server = websockets.serve(wbs,
                                                    sensor.cfg["ws"]["ip"],
                                                    sensor.cfg["ws"]["port"])

                    asyncio.get_event_loop().run_until_complete(
                        start_server)  # Startet den Websocket Server
                    asyncio.get_event_loop().run_forever()
                except Exception as e:
                    sensor.log_event(
                        "WEBSOCKET", 9, "Server Killed " +
                        str(e))  # Schreibt eventuelle errors in die logdatei
                    if "Errno 10048" in str(e) or "Errno 98" in str(
                            e) or "already in use" in str(
                                e
                            ):  ### Error wenn das Tool Zweimal gestartet wird
                        threadloops = False
                        serverloop.stop()
                        clientloop.stop()
                        time.sleep(3)
                        clear()
                        print("Websocket already in use\n\n" + str(e))
                        input("\nPress Enter to Close")
                        sys.exit(0)
                    time.sleep(1)
示例#9
0
文件: ws.py 项目: Elegond/monitoring
DISK = sensor.get_all_drives(
)  # Disk List z.B. {"speicher": {"C:\\": {"total": ["475.50", "GB", "100.0"], "used": [
# "409.64", "GB", "86.1"], "free": ["65.86", "GB", "13.9"], "enabled": true, "warning": 85, "critical": 95},
# "D:\\": {"total": ["232.89", "GB", "100.0"], "used": ["116.42", "GB", "50.0"], "free": ["116.47", "GB", "50.0"],
# "enabled": true, "warning": 85, "critical": 95}, "E:\\": {"enabled": false, "warning": 85, "critical": 95},
# "F:\\": {"total": ["232.85", "GB", "100.0"], "used": ["148.97", "MB", "0.1"], "free": ["232.70", "GB", "99.9"],
# "enabled": true, "warning": 85, "critical": 95}}}

### TIP: benutze https://www.jsonformatter.io/ um diesen Json Dump leichter zu lesen

# loops für die Websockets
## inklusive workaround für windows python 3.8
policy = asyncio.get_event_loop_policy()
policy._loop_factory = asyncio.SelectorEventLoop
selector = selectors.SelectSelector()
clientloop = asyncio.SelectorEventLoop(selector)

selector2 = selectors.SelectSelector()
serverloop = asyncio.SelectorEventLoop(selector2)


def clear():  # Löscht den Inhalt des Terminals
    system('cls' if name == 'nt' else 'clear')


def state_event():  # Gibt eine liste aus allen listen im Json format zurück
    return json.dumps({
        **DISK,
        **CPU,
        **MEM, "sleep": sleep,
示例#10
0
                elif (var355.type == aiohttp.WSMsgType.CLOSED):
                    pass
                break

    yield from function2515()


var3322 = argparse.ArgumentParser(
    description='websocket console client for wssrv.py example.')
var3322.add_argument('--host',
                     action='store',
                     dest='host',
                     default='127.0.0.1',
                     help='Host name')
var3322.add_argument('--port',
                     action='store',
                     dest='port',
                     default=8080,
                     type=int,
                     help='Port number')
if (__name__ == '__main__'):
    var2601 = var3322.parse_args()
    if (':' in var2601.host):
        (var2601.host, var461) = var2601.host.split(':', 1)
        var2601.port = int(var461)
    var2042 = 'http://{}:{}'.format(var2601.host, var2601.var461)
    var3984 = asyncio.SelectorEventLoop(selectors.SelectSelector())
    asyncio.set_event_loop(var3984)
    var3984.add_signal_handler(signal.SIGINT, var3984.stop)
    asyncio.Task(function2101(var3984, var2042))
    var3984.run_forever()
示例#11
0
import time

import aiohttp

URL = 'https://www.xiazaiba.com'


async def job(session):
    response = await session.get(URL)
    return str(response.url)


async def main(_loop):
    async with aiohttp.ClientSession() as session:
        tasks = [_loop.create_task(job(session)) for _ in range(5)]
        finished, unfinished = await asyncio.wait(tasks)
        all_results = [r.result() for r in finished]  # 得到工作回报.
        print(all_results)


if __name__ == '__main__':
    t2 = time.time()
    # loop = asyncio.get_event_loop()           # Removed
    selector = selectors.SelectSelector()  # New line
    loop = asyncio.SelectorEventLoop(selector)  # New line
    try:
        loop.run_until_complete(main(loop))  # 完成事件循环,直到最后一个任务结束
    finally:
        loop.close()  # 结束事件循环.
    print("Async total time:", time.time() - t2)