2525import logging
2626import socket
2727import time
28- from datetime import datetime , timedelta
28+ from datetime import datetime , timedelta , timezone
2929
3030import tenacity
3131from apscheduler .events import EVENT_JOB_ERROR , EVENT_JOB_EXECUTED
3232from apscheduler .schedulers .background import BackgroundScheduler
33+ from skale .core .settings import SkaleSettings , get_settings
3334from skale .transactions .exceptions import TransactionError
3435from web3 .logs import DISCARD
3536
5657
5758
5859class BountyAgent :
59- def __init__ (self , skale , node_id = None ):
60+ def __init__ (self , skale , settings : SkaleSettings , node_id = None ):
6061 self .agent_name = get_agent_name (self .__class__ .__name__ )
6162 self .logger = logging .getLogger (self .agent_name )
62- add_file_handler (self .logger , self .agent_name , node_id )
63+ add_file_handler (
64+ self .logger ,
65+ self .agent_name ,
66+ node_id ,
67+ str (settings .sgx_url ),
68+ str (settings .endpoint ),
69+ )
6370 self .logger .info (f'Initialization of { self .agent_name } ...' )
6471 if node_id is None :
6572 self .id = get_id_from_config (NODE_CONFIG_FILEPATH )
@@ -90,7 +97,7 @@ def get_reward_date(self):
9097 except Exception as err :
9198 self .notifier .send (f'Cannot get reward date from SKALE Manager: { err } ' , MsgIcon .ERROR )
9299 raise
93- return datetime .utcfromtimestamp (reward_date )
100+ return datetime .fromtimestamp (reward_date , timezone . utc )
94101
95102 def get_bounty (self ):
96103 try :
@@ -134,7 +141,7 @@ def job(self) -> None:
134141 reward_date = self .get_reward_date ()
135142 last_block_number = self .skale .web3 .eth .block_number
136143 block_data = call_retry (self .skale .web3 .eth .get_block , last_block_number )
137- block_timestamp = datetime .utcfromtimestamp (block_data ['timestamp' ])
144+ block_timestamp = datetime .fromtimestamp (block_data ['timestamp' ], timezone . utc )
138145 self .logger .info (f'Reward date: { reward_date } ' )
139146 self .logger .info (f'Block timestamp: { block_timestamp } ' )
140147 if reward_date > block_timestamp :
@@ -145,7 +152,7 @@ def job(self) -> None:
145152 def job_listener (self , event ):
146153 if event .exception :
147154 self .logger .info ('"Get Bounty" job failed' )
148- utc_now = datetime .utcnow ( )
155+ utc_now = datetime .now ( timezone . utc )
149156 self .scheduler .add_job (
150157 self .job , 'date' , run_date = utc_now + timedelta (seconds = DELAY_AFTER_ERR )
151158 )
@@ -156,7 +163,7 @@ def job_listener(self, event):
156163 reward_date = self .get_reward_date ()
157164 self .notifier .send (f'Next reward date: { reward_date } ' , MsgIcon .BOUNTY )
158165 except Exception :
159- reward_date = datetime .utcnow ( ) + timedelta (seconds = DELAY_AFTER_ERR )
166+ reward_date = datetime .now ( timezone . utc ) + timedelta (seconds = DELAY_AFTER_ERR )
160167 self .logger .info (f'Next try to get reward date: { reward_date } ' )
161168 self .scheduler .add_job (self .job , 'date' , run_date = reward_date )
162169 self .scheduler .print_jobs ()
@@ -165,7 +172,7 @@ def run(self) -> None:
165172 """Starts agent."""
166173 reward_date = self .get_reward_date ()
167174 self .logger .info (f"Next reward date on agent's start: { reward_date } " )
168- utc_now = datetime .utcnow ( )
175+ utc_now = datetime .now ( timezone . utc )
169176 if utc_now > reward_date :
170177 reward_date = utc_now
171178 self .scheduler .add_job (self .job , 'date' , run_date = reward_date )
@@ -179,11 +186,12 @@ def stop(self):
179186
180187
181188if __name__ == '__main__' :
182- init_logger ()
189+ st = get_settings (SkaleSettings )
190+ init_logger (str (st .sgx_url ), str (st .endpoint ))
183191 while True :
184192 try :
185- skale = init_skale ()
186- bounty_agent = BountyAgent (skale )
193+ skale = init_skale (st )
194+ bounty_agent = BountyAgent (skale , settings = st )
187195 bounty_agent .run ()
188196 while not bounty_agent .is_stopped :
189197 time .sleep (1 )
0 commit comments