tanbushi commited on
Commit
989566d
·
1 Parent(s): f0889c9

fix: 首包转发到wstunnel后端, shutdown延迟调用, macOS兼容

Browse files
Files changed (3) hide show
  1. .gitattributes +0 -35
  2. .gitignore +2 -0
  3. server.py +8 -8
.gitattributes DELETED
@@ -1,35 +0,0 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ __pycache__/
2
+ *.pyc
server.py CHANGED
@@ -1,9 +1,7 @@
1
  import asyncio
2
  import os
3
- import subprocess
4
  import signal
5
  import sys
6
- import functools
7
 
8
  WSTUNNEL_PORT = 7861
9
  PROXY_PORT = 7860
@@ -16,7 +14,7 @@ async def health_check(reader, writer):
16
  writer.close()
17
 
18
 
19
- async def tcp_proxy(reader, writer):
20
  try:
21
  backend_reader, backend_writer = await asyncio.wait_for(
22
  asyncio.open_connection("127.0.0.1", WSTUNNEL_PORT), timeout=5
@@ -27,6 +25,10 @@ async def tcp_proxy(reader, writer):
27
  writer.close()
28
  return
29
 
 
 
 
 
30
  async def forward(src, dst):
31
  try:
32
  while True:
@@ -62,9 +64,7 @@ async def handle_client(reader, writer):
62
  if is_health_check:
63
  await health_check(reader, writer)
64
  else:
65
- writer.write(data)
66
- await writer.drain()
67
- await tcp_proxy(reader, writer)
68
  except (ConnectionResetError, BrokenPipeError, OSError, asyncio.TimeoutError):
69
  pass
70
  finally:
@@ -105,9 +105,9 @@ async def main():
105
  loop = asyncio.get_event_loop()
106
  for sig in (signal.SIGTERM, signal.SIGINT):
107
  try:
108
- loop.add_signal_handler(sig, functools.partial(asyncio.create_task, shutdown()))
109
  except NotImplementedError:
110
- pass
111
 
112
  async with server:
113
  print(f"proxy server ready on port {PROXY_PORT}", flush=True)
 
1
  import asyncio
2
  import os
 
3
  import signal
4
  import sys
 
5
 
6
  WSTUNNEL_PORT = 7861
7
  PROXY_PORT = 7860
 
14
  writer.close()
15
 
16
 
17
+ async def tcp_proxy(reader, writer, initial_data=None):
18
  try:
19
  backend_reader, backend_writer = await asyncio.wait_for(
20
  asyncio.open_connection("127.0.0.1", WSTUNNEL_PORT), timeout=5
 
25
  writer.close()
26
  return
27
 
28
+ if initial_data:
29
+ backend_writer.write(initial_data)
30
+ await backend_writer.drain()
31
+
32
  async def forward(src, dst):
33
  try:
34
  while True:
 
64
  if is_health_check:
65
  await health_check(reader, writer)
66
  else:
67
+ await tcp_proxy(reader, writer, initial_data=data)
 
 
68
  except (ConnectionResetError, BrokenPipeError, OSError, asyncio.TimeoutError):
69
  pass
70
  finally:
 
105
  loop = asyncio.get_event_loop()
106
  for sig in (signal.SIGTERM, signal.SIGINT):
107
  try:
108
+ loop.add_signal_handler(sig, lambda: asyncio.create_task(shutdown()))
109
  except NotImplementedError:
110
+ signal.signal(sig, lambda n, f: asyncio.run_coroutine_threadsafe(shutdown(), loop))
111
 
112
  async with server:
113
  print(f"proxy server ready on port {PROXY_PORT}", flush=True)