Sadeep Sachintha commited on
Commit ·
4b7e1b4
1
Parent(s): ffdcbc6
feat: implement FXService and force IPv4 connectivity for bot and API requests
Browse files- main.py +6 -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 |
-
|
|
|
|
| 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 |
-
|
|
|
|
| 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()
|