diff --git a/folding/__init__.py b/folding/__init__.py index d8bdd849..3f2285eb 100644 --- a/folding/__init__.py +++ b/folding/__init__.py @@ -1,4 +1,4 @@ -__version__ = "3.0.3" +__version__ = "3.0.4" version_split = __version__.split(".") __spec_version__ = ( (10000 * int(version_split[0])) diff --git a/folding/store.py b/folding/store.py index 647bb640..a4f9740e 100644 --- a/folding/store.py +++ b/folding/store.py @@ -5,12 +5,10 @@ import sqlite3 import requests from queue import Queue -from typing import Dict, List +from typing import List from dotenv import load_dotenv - +from datetime import timezone from datetime import datetime - -import numpy as np import pandas as pd from atom.epistula.epistula import Epistula @@ -79,7 +77,7 @@ def get_queue(self, validator_hotkey: str, ready=True) -> Queue: if ready: # Calculate the threshold time for ready jobs - now = datetime.utcnow().isoformat() + now = datetime.now(timezone.utc).isoformat() query = f""" SELECT * FROM {self.table_name} WHERE active = 1 @@ -359,7 +357,7 @@ async def update(self, loss: float, hotkey: str): self.best_loss = loss self.best_loss_at = pd.Timestamp.now().floor("s") self.best_hotkey = hotkey - self.updated_at = datetime.now() + self.updated_at = datetime.now(timezone.utc) class MockJob(Job): diff --git a/folding/utils/s3_utils.py b/folding/utils/s3_utils.py index 280a430f..e7d00175 100644 --- a/folding/utils/s3_utils.py +++ b/folding/utils/s3_utils.py @@ -76,7 +76,7 @@ def get(self, key: str, output_path: str) -> None: pass @abstractmethod - def generate_presigned_url(self, key: str, expires_in: int = 3600) -> str: + def generate_presigned_url(self, key: str, expires_in: int = 7200) -> str: """Generates a presigned URL for temporary access to an object.""" pass @@ -218,7 +218,7 @@ def generate_presigned_url( miner_hotkey: str, pdb_id: str, file_name: str, - expires_in: int = 3600, + expires_in: int = 7200, method: str = "get_object", ) -> dict[str, Any]: """Generates a presigned URL for temporary access to an object. diff --git a/folding/validators/forward.py b/folding/validators/forward.py index 28eac598..557bf922 100644 --- a/folding/validators/forward.py +++ b/folding/validators/forward.py @@ -159,7 +159,7 @@ async def try_prepare_md_challenge(self, config, pdb_id: str) -> Dict: ) try: - async with timeout(300): + async with timeout(600): await protein.setup_simulation() if protein.init_energy > 0: diff --git a/neurons/validator.py b/neurons/validator.py index 639326da..67ef82f3 100644 --- a/neurons/validator.py +++ b/neurons/validator.py @@ -7,7 +7,7 @@ import asyncio import traceback -from datetime import datetime +from datetime import datetime, timezone from typing import Any, Dict, List import netaddr @@ -104,10 +104,10 @@ def __init__(self, config=None): self.last_time_checked = ( self.last_time_checked if hasattr(self, "last_time_checked") - else datetime.now() + else datetime.now(timezone.utc) ) - self.last_time_created_jobs = datetime.now() + self.last_time_created_jobs = datetime.now(timezone.utc) if not self.config.s3.off: try: @@ -277,7 +277,7 @@ async def add_job(self, job_event: dict[str, Any], protein: Protein = None) -> b job_event["s3_links"] = { "testing": "testing" } # overwritten below if s3 logging is on. - async with timeout(300): + async with timeout(600): logger.info( f"setup_simulation for organic query: {job_event['pdb_id']}" ) @@ -308,7 +308,7 @@ async def add_job(self, job_event: dict[str, Any], protein: Protein = None) -> b str(spec_version), job_event["pdb_id"], self.validator_hotkey_reference, - datetime.now().strftime("%Y-%m-%d_%H-%M-%S"), + datetime.now(timezone.utc).strftime("%Y-%m-%d_%H-%M-%S"), ) s3_links = {} for file_type, file_path in files_to_upload.items(): @@ -350,7 +350,7 @@ async def add_job(self, job_event: dict[str, Any], protein: Protein = None) -> b logger.success("Job was uploaded successfully!") - self.last_time_created_jobs = datetime.now() + self.last_time_created_jobs = datetime.now(timezone.utc) # TODO: return job_id return True @@ -501,7 +501,7 @@ async def prepare_event_for_logging(event: Dict): output_links.append(defaultdict(str)) best_cpt_files = [] - output_time = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + output_time = datetime.now(timezone.utc).strftime("%Y-%m-%d_%H-%M-%S") for idx, (uid, files) in enumerate( zip(job.event["processed_uids"], job.event["files"]) @@ -664,7 +664,7 @@ async def read_and_update_rewards(self): last_time_checked=self.last_time_checked.strftime("%Y-%m-%dT%H:%M:%S") ) - self.last_time_checked = datetime.now() + self.last_time_checked = datetime.now(timezone.utc) if inactive_jobs_queue.qsize() == 0: logger.info("No inactive jobs to update.") diff --git a/pyproject.toml b/pyproject.toml index 070551e3..64f43af1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "folding" -version = "3.0.3" +version = "3.0.4" description = "Macrocosmos Subnet 25: Mainframe" authors = ["Brian McCrindle ", "Sergio Champoux ", "Szymon Fonau "]