diff --git a/bb4g/__init__.py b/bb4g/__init__.py index 1b686c08..dedf0071 100644 --- a/bb4g/__init__.py +++ b/bb4g/__init__.py @@ -1,12 +1,13 @@ +import enum import json +import logging import math from datetime import datetime from typing import List -import enum + import requests from django.conf import settings as s from envipy_additional_information import EnviPyModel, UIConfig, WidgetType -from envipy_additional_information import register from bridge.contracts import Classifier # noqa: I001 from bridge.dto import ( @@ -17,6 +18,9 @@ from bridge.dto import ( TransformationProductPrediction, ) # noqa: I001 +logger = logging.getLogger("epdb") + + class SamplingAlgorithm(enum.Enum): EXACT = "exact" @@ -88,7 +92,7 @@ class BB4G(Classifier): retries = 0 while not started and retries < 5: res = requests.post(f"{self.url}/start", headers=header, data={}, proxies=s.PROXIES or None) - + logger.info(f"Starting BB4G: {res.status_code}") if res.status_code == 200: started = True elif res.status_code in [500, 502]: @@ -166,18 +170,30 @@ class BB4G(Classifier): "cutoff": self.config.cutoff, } - resp = requests.post(f"{self.url}/compute", headers=header, data=json.dumps(data), proxies=s.PROXIES or None) + retries = 0 + while retries < 5: + resp = requests.post(f"{self.url}/compute", headers=header, data=json.dumps(data), + proxies=s.PROXIES or None) - resp.raise_for_status() + if resp.status_code == 418: + retries += 1 + logger.info(f"BB4G predict hit a 418, retrying in 60 seconds") + import time + time.sleep(60) + continue - for substrate, predictions in resp.json().items(): - preds = {} + resp.raise_for_status() - for pred in predictions: - prod = pred["prediction"] - prob = math.exp(pred["log_likelihood"]) - preds[prod] = prob + for substrate, predictions in resp.json().items(): + preds = {} - result[substrate] = preds + for pred in predictions: + prod = pred["prediction"] + prob = math.exp(pred["log_likelihood"]) + preds[prod] = prob + + result[substrate] = preds + + break return result diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index ad4174fa..ae477081 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -25,7 +25,7 @@ services: - ep_bayer_redis_data:/data biotransformer3: - image: envipath/biotransformer3:1.0 + image: git.envipath.com/envipath/biotransformer3:1.0 container_name: epbiotransformer3 # web: @@ -40,7 +40,7 @@ services: # - ep_bayer_data:/opt/enviPy/ celery_worker: - image: envipath/envipy-bayer:1.0 + image: git.envipath.com/envipath/envipy-bayer:1.0 container_name: epcelery env_file: - .env.dev diff --git a/envipath/settings.py b/envipath/settings.py index ce4e615e..77f89cdb 100644 --- a/envipath/settings.py +++ b/envipath/settings.py @@ -275,6 +275,12 @@ LOGGING = { "filename": os.path.join(LOG_DIR, "debug.log"), "formatter": "simple", }, + "auth_file": { + "level": "INFO", # Or higher + "class": "logging.FileHandler", + "filename": os.path.join(LOG_DIR, "auth.log"), + "formatter": "simple", + } }, "loggers": { # For everything under epdb/ loaded via getlogger(__name__) @@ -295,6 +301,11 @@ LOGGING = { "propagate": True, "level": os.environ.get("LOG_LEVEL", "INFO"), }, + "auth": { + "handlers": ["auth_file"], + "propagate": True, + "level": os.environ.get("LOG_LEVEL", "INFO"), + } }, }