Sadeep Sachintha commited on
Commit
4b7e1b4
·
1 Parent(s): ffdcbc6

feat: implement FXService and force IPv4 connectivity for bot and API requests

Browse files
Files changed (2) hide show
  1. main.py +6 -2
  2. services/fx_service.py +3 -1
main.py CHANGED
@@ -1,9 +1,12 @@
1
  import logging
 
2
  from contextlib import asynccontextmanager
3
  from fastapi import FastAPI, Request, Response
4
  from fastapi.staticfiles import StaticFiles
5
  from fastapi.responses import FileResponse
6
  from aiogram import Bot, Dispatcher, types
 
 
7
  from apscheduler.schedulers.asyncio import AsyncIOScheduler
8
  from sqlalchemy import select, func
9
 
@@ -18,8 +21,9 @@ from services.fx_service import fx_service
18
  logging.basicConfig(level=getattr(logging, settings.log_level))
19
  logger = logging.getLogger(__name__)
20
 
21
- # Initialize Aiogram
22
- bot = Bot(token=settings.bot_token)
 
23
  dp = Dispatcher()
24
  dp.include_router(bot_router)
25
 
 
1
  import logging
2
+ import socket
3
  from contextlib import asynccontextmanager
4
  from fastapi import FastAPI, Request, Response
5
  from fastapi.staticfiles import StaticFiles
6
  from fastapi.responses import FileResponse
7
  from aiogram import Bot, Dispatcher, types
8
+ from aiogram.client.session.aiohttp import AiohttpSession
9
+ from aiohttp import TCPConnector
10
  from apscheduler.schedulers.asyncio import AsyncIOScheduler
11
  from sqlalchemy import select, func
12
 
 
21
  logging.basicConfig(level=getattr(logging, settings.log_level))
22
  logger = logging.getLogger(__name__)
23
 
24
+ # Initialize Aiogram with forced IPv4 connector to bypass Hugging Face IPv6 connectivity bugs
25
+ session = AiohttpSession(connector=TCPConnector(family=socket.AF_INET))
26
+ bot = Bot(token=settings.bot_token, session=session)
27
  dp = Dispatcher()
28
  dp.include_router(bot_router)
29
 
services/fx_service.py CHANGED
@@ -1,3 +1,4 @@
 
1
  import aiohttp
2
  import logging
3
  from typing import Optional
@@ -36,7 +37,8 @@ class FXService:
36
  url = f"{self.base_url}/pair/{base_currency}/{target_currency}"
37
 
38
  try:
39
- async with aiohttp.ClientSession() as session:
 
40
  async with session.get(url) as response:
41
  if response.status == 200:
42
  data = await response.json()
 
1
+ import socket
2
  import aiohttp
3
  import logging
4
  from typing import Optional
 
37
  url = f"{self.base_url}/pair/{base_currency}/{target_currency}"
38
 
39
  try:
40
+ connector = aiohttp.TCPConnector(family=socket.AF_INET)
41
+ async with aiohttp.ClientSession(connector=connector) as session:
42
  async with session.get(url) as response:
43
  if response.status == 200:
44
  data = await response.json()