Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 323be2d

Browse files
committed
add keepalive
1 parent 3a753f3 commit 323be2d

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

WebStreamer/__main__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from asyncio import get_event_loop
1+
from asyncio import create_task, get_event_loop
22
from glob import glob
33

44
from aiohttp import web
@@ -8,6 +8,7 @@
88
from WebStreamer.bot.client import initialize_clients
99
from WebStreamer.logger import LOGGER
1010
from WebStreamer.server import web_server
11+
from WebStreamer.utils import ping_server
1112
from WebStreamer.vars import Vars
1213

1314
files = glob("WebStreamer/bot/plugins/*.py")
@@ -27,6 +28,8 @@ async def start_services():
2728
if bot_info.dc_id:
2829
LOGGER.info(f"DC ID =>> {str(bot_info.dc_id)}")
2930
await initialize_clients()
31+
if Vars.KEEP_ALIVE:
32+
create_task(ping_server())
3033
await server.setup()
3134
await web.TCPSite(server, Vars.BIND_ADDRESS, Vars.PORT).start()
3235
LOGGER.info("Service Started")

WebStreamer/utils/keep_alive.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from asyncio import sleep
2+
3+
from aiohttp import ClientSession, ClientTimeout
4+
5+
from WebStreamer.logger import LOGGER
6+
from WebStreamer.vars import Vars
7+
8+
9+
async def ping_server():
10+
sleep_time = Vars.PING_INTERVAL
11+
LOGGER.info(f"Started with {sleep_time}s interval between pings")
12+
while True:
13+
await sleep(sleep_time)
14+
try:
15+
async with ClientSession(timeout=ClientTimeout(total=10)) as session:
16+
async with session.get(Vars.URL) as resp:
17+
LOGGER.info(f"Pinged server with response: {resp.status}")
18+
except TimeoutError:
19+
LOGGER.warning("Couldn't connect to the site URL..")
20+
except Exception:
21+
LOGGER.error("Unexpected error: ", exc_info=True)

WebStreamer/vars.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ class Vars:
1717

1818
# Bot tokens
1919
BOT_TOKEN = str(config("BOT_TOKEN", default=None))
20-
# Bot tokens end
21-
20+
PING_INTERVAL = int(config("PING_INTERVAL", default=0)) # should be in seconds
21+
KEEP_ALIVE = PING_INTERVAL != 0
2222
SLEEP_THRESHOLD = int(config("SLEEP_THRESHOLD", default=60))
2323
WORKERS = int(config("WORKERS", default=8))
2424
LOG_CHANNEL = int(config("LOG_CHANNEL", default=-100))

0 commit comments

Comments
 (0)