added is_production and overrides
This commit is contained in:
1 parent
1ae0636201
commit
79d3fb72f9
4 files changed
+52
-40
No files matched your search
+20
-28
@@ -1,40 +1,32 @@
|
|||||||
import json
|
import json
|
||||||
from enum import Enum
|
|
||||||
from functools import cache
|
|
||||||
import pathlib
|
import pathlib
|
||||||
|
from functools import cache
|
||||||
|
|
||||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
from monitor_utils.constants import (
|
||||||
|
PROXIES_PATH,
|
||||||
from monitor_utils.constants import PROXIES_PATH, PROJECT_ROOT
|
PROJECT_ROOT,
|
||||||
|
DEVELOPMENT_MODE,
|
||||||
|
PRODUCTION_BOT_TOKEN,
|
||||||
|
DEVELOPMENT_BOT_TOKEN,
|
||||||
|
DevelopmentMode,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class DevelopmentMode(str, Enum):
|
def is_production(override_production=False) -> bool:
|
||||||
PRODUCTION = "PRODUCTION"
|
if override_production:
|
||||||
DEVELOPMENT = "DEVELOPMENT"
|
return override_production
|
||||||
|
|
||||||
|
return DEVELOPMENT_MODE == DevelopmentMode.PRODUCTION
|
||||||
|
|
||||||
|
|
||||||
class Settings(BaseSettings):
|
IS_PRODUCTION = is_production()
|
||||||
mongo_url: str
|
|
||||||
mongo_database_name: str
|
|
||||||
production_bot_token: str
|
|
||||||
profit_api_key: str
|
|
||||||
development_bot_token: str | None = None
|
|
||||||
logging_level: str = "INFO"
|
|
||||||
development_mode: DevelopmentMode = DevelopmentMode.PRODUCTION
|
|
||||||
|
|
||||||
model_config = SettingsConfigDict(env_file=(".env", ".env.local"), extra="ignore")
|
|
||||||
|
|
||||||
@property
|
|
||||||
def bot_token(self) -> str:
|
|
||||||
if self.development_mode == DevelopmentMode.PRODUCTION:
|
|
||||||
return self.production_bot_token
|
|
||||||
|
|
||||||
return self.development_bot_token
|
|
||||||
|
|
||||||
|
|
||||||
@cache
|
def get_bot_token() -> str:
|
||||||
def get_settings() -> Settings:
|
if IS_PRODUCTION:
|
||||||
return Settings()
|
return PRODUCTION_BOT_TOKEN
|
||||||
|
|
||||||
|
return DEVELOPMENT_BOT_TOKEN
|
||||||
|
|
||||||
|
|
||||||
@cache
|
@cache
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import pathlib
|
import pathlib
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import requests
|
import requests
|
||||||
@@ -8,7 +9,26 @@ from pymongo.errors import PyMongoError
|
|||||||
|
|
||||||
PROJECT_ROOT = pathlib.Path(".")
|
PROJECT_ROOT = pathlib.Path(".")
|
||||||
PROXIES_PATH = pathlib.Path("proxies.txt")
|
PROXIES_PATH = pathlib.Path("proxies.txt")
|
||||||
|
MONGO_DATABASE_NAME = "tpv_woot"
|
||||||
|
MONGO_URL = (
|
||||||
|
"mongodb://tpv:n3%23QI07GnbZCbvGJ@zelda.disqualifier.me:27017/?authSource=tpv_woot"
|
||||||
|
)
|
||||||
|
PRODUCTION_BOT_TOKEN = (
|
||||||
|
"MTQwMDE4NDk2MzY4NDYzMDUyOQ.GOrqOb.6frT3upUQ5B9XubVOIT9pdzVcYVXSrnEMK7RlA"
|
||||||
|
)
|
||||||
|
DEVELOPMENT_BOT_TOKEN = (
|
||||||
|
"MTUxNzYwNDI4NDEwMTk1MTUxOA.GO3b1i.aXdPICnvlY37m67OqESVcQsZhFcGOcCrn_1F-U"
|
||||||
|
)
|
||||||
|
PROFIT_API_KEY = "dev-XvIu8S83BJ2N1C9ZCsoLAAav5jan7kj5"
|
||||||
|
LOGGING_LEVEL = "INFO"
|
||||||
|
|
||||||
|
|
||||||
|
class DevelopmentMode(str, Enum):
|
||||||
|
PRODUCTION = "PRODUCTION"
|
||||||
|
DEVELOPMENT = "DEVELOPMENT"
|
||||||
|
|
||||||
|
|
||||||
|
DEVELOPMENT_MODE = DevelopmentMode.PRODUCTION
|
||||||
RETRY_LIMIT = 5
|
RETRY_LIMIT = 5
|
||||||
RETRY_WAIT = 3
|
RETRY_WAIT = 3
|
||||||
BACKOFF_DELAY = 0.001
|
BACKOFF_DELAY = 0.001
|
||||||
|
|||||||
@@ -7,23 +7,20 @@ from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorCollection
|
|||||||
from pymongo import UpdateOne
|
from pymongo import UpdateOne
|
||||||
from pymongo.errors import PyMongoError
|
from pymongo.errors import PyMongoError
|
||||||
|
|
||||||
from monitor_utils.config import get_settings
|
|
||||||
from monitor_utils.models import Product
|
from monitor_utils.models import Product
|
||||||
from monitor_utils.constants import STATUS_PENDING
|
from monitor_utils.constants import STATUS_PENDING, MONGO_DATABASE_NAME, MONGO_URL
|
||||||
|
|
||||||
LOGGER = logging.getLogger(__name__)
|
LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def get_collection(collection_name: str) -> AsyncIOMotorCollection:
|
def get_collection(collection_name: str) -> AsyncIOMotorCollection:
|
||||||
settings = get_settings()
|
return get_mongo_client()[MONGO_DATABASE_NAME][collection_name]
|
||||||
return get_mongo_client()[settings.mongo_database_name][collection_name]
|
|
||||||
|
|
||||||
|
|
||||||
@cache
|
@cache
|
||||||
def get_mongo_client() -> AsyncIOMotorClient:
|
def get_mongo_client() -> AsyncIOMotorClient:
|
||||||
settings = get_settings()
|
|
||||||
return AsyncIOMotorClient(
|
return AsyncIOMotorClient(
|
||||||
settings.mongo_url,
|
MONGO_URL,
|
||||||
maxPoolSize=200,
|
maxPoolSize=200,
|
||||||
minPoolSize=10,
|
minPoolSize=10,
|
||||||
retryWrites=True,
|
retryWrites=True,
|
||||||
|
|||||||
@@ -11,8 +11,9 @@ from monitor_utils.constants import (
|
|||||||
EXPECTED_TASK_ERRORS,
|
EXPECTED_TASK_ERRORS,
|
||||||
FLAG_WEBHOOK_MAP,
|
FLAG_WEBHOOK_MAP,
|
||||||
BUCKET_WEBHOOK_MAP,
|
BUCKET_WEBHOOK_MAP,
|
||||||
|
LOGGING_LEVEL,
|
||||||
)
|
)
|
||||||
from monitor_utils.config import get_settings, get_config
|
from monitor_utils.config import get_config, is_production
|
||||||
from monitor_utils.models import (
|
from monitor_utils.models import (
|
||||||
Product,
|
Product,
|
||||||
ProductMetadata,
|
ProductMetadata,
|
||||||
@@ -28,21 +29,23 @@ LOGGER = logging.getLogger(__name__)
|
|||||||
|
|
||||||
def configure_logging():
|
def configure_logging():
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
level=get_settings().logging_level,
|
level=LOGGING_LEVEL,
|
||||||
format="%(asctime)s - %(levelname)s - %(module)s - %(funcName)s - %(message)s",
|
format="%(asctime)s - %(levelname)s - %(module)s - %(funcName)s - %(message)s",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def setup_config(monitor_name: str) -> tuple[list[str], dict, AsyncIOMotorCollection]:
|
def setup_config(
|
||||||
is_production = get_settings().development_mode == "PRODUCTION"
|
monitor_name: str, override_production=False
|
||||||
|
) -> tuple[list[str], dict, AsyncIOMotorCollection]:
|
||||||
|
use_production = is_production(override_production)
|
||||||
config, _ = get_config(
|
config, _ = get_config(
|
||||||
monitor_name=monitor_name,
|
monitor_name=monitor_name,
|
||||||
use_production_path=is_production,
|
use_production_path=use_production,
|
||||||
)
|
)
|
||||||
|
|
||||||
category_names = config["categories"]
|
category_names = config["categories"]
|
||||||
collection = get_collection(
|
collection = get_collection(
|
||||||
monitor_name if is_production else f"{monitor_name}_testing"
|
monitor_name if use_production else f"{monitor_name}_testing"
|
||||||
)
|
)
|
||||||
return category_names, config["channels"], collection
|
return category_names, config["channels"], collection
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user