mirror of
https://github.com/stronk-dev/RewardCaller.git
synced 2025-07-06 06:15:10 +02:00
init commit
This commit is contained in:
commit
9be9789529
30
.gitignore
vendored
Normal file
30
.gitignore
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode
|
||||
|
||||
### VisualStudioCode ###
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
!.vscode/*.code-snippets
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
.history/
|
||||
|
||||
# Built Visual Studio Code Extensions
|
||||
*.vsix
|
||||
|
||||
### VisualStudioCode Patch ###
|
||||
# Ignore all local history of files
|
||||
.history
|
||||
.ionide
|
||||
|
||||
# Support for Project snippet scope
|
||||
.vscode/*.code-snippets
|
||||
|
||||
# Ignore code-workspaces
|
||||
*.code-workspace
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode
|
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"python.formatting.provider": "autopep8"
|
||||
}
|
153
better-call-reward.py
Executable file
153
better-call-reward.py
Executable file
@ -0,0 +1,153 @@
|
||||
#!/bin/python3
|
||||
from asyncio import constants
|
||||
from pyclbr import Function
|
||||
import requests
|
||||
import json
|
||||
import time
|
||||
import sys
|
||||
import argparse
|
||||
from datetime import datetime
|
||||
import logging
|
||||
|
||||
# set your Orchestrator url
|
||||
# orchUrl = 'http://192.168.137.103:7935'
|
||||
URL_DEFAULT = 'http://localhost:7935' # default
|
||||
waitTime = 60 * 60 # check reward every 1 hour (value in second)
|
||||
waitTime = 15
|
||||
|
||||
retryTimeOffline = 60 # delay when O is offline in second
|
||||
retryTimeReward = 60 * 60 # time for check and call reward in second
|
||||
|
||||
|
||||
def my_function():
|
||||
print("Hello from a function")
|
||||
|
||||
|
||||
def parseArgs():
|
||||
# Instantiate the parser
|
||||
parser = argparse.ArgumentParser(description='Optional app description')
|
||||
parser.add_argument('-url', type=str, nargs='?',
|
||||
help='URL for your Orchestrator')
|
||||
parser.add_argument('-delay', type=int, nargs='?',
|
||||
help='delay between next try of call "reward"')
|
||||
# Parse the argument
|
||||
args = parser.parse_args()
|
||||
if args.url is None:
|
||||
url = URL_DEFAULT
|
||||
else:
|
||||
url = args.url
|
||||
print("Orchestrator URL: " + url)
|
||||
return url
|
||||
# end parseArgs()
|
||||
|
||||
# check O status and get some info
|
||||
|
||||
|
||||
def statusOrch(url): # /status
|
||||
try:
|
||||
r = requests.get(url + '/status')
|
||||
responseStatus = r.status_code
|
||||
except requests.exceptions.RequestException as e: # This is the correct syntax
|
||||
print("Error during connection to '" + url +
|
||||
"'. Please check your Orchestrator url.")
|
||||
exit(0)
|
||||
print("Connection success")
|
||||
print("---Info---")
|
||||
print("Version: " + r.json()['Version'])
|
||||
print("GolangRuntimeVersion: " + r.json()['GolangRuntimeVersion'])
|
||||
print("")
|
||||
|
||||
# transcoders info
|
||||
print("Transcoders:")
|
||||
i = 1
|
||||
for t in r.json()['RegisteredTranscoders']:
|
||||
print("["+str(i) + "] Address: " + t['Address'] +
|
||||
" Capacity:" + str(t['Capacity']))
|
||||
# end statusOrch(url) ----------------------------------------------
|
||||
|
||||
|
||||
def pingOrch(url): # /status
|
||||
try:
|
||||
requests.get(url + '/status')
|
||||
except requests.exceptions.RequestException as e: # This is the correct syntax
|
||||
print("Error during connection to '" + url +
|
||||
"'. Please check your Orchestrator url.")
|
||||
return False
|
||||
return True
|
||||
# end pingOrch() ----------------------------------------------
|
||||
|
||||
|
||||
def getLastRewardRound(url): # /orchestratorInfo
|
||||
try:
|
||||
r = requests.get(url + '/orchestratorInfo')
|
||||
except requests.exceptions.RequestException as e: # This is the correct syntax
|
||||
print("Error: can't get 'Last Reward Round' round info.")
|
||||
return -1
|
||||
|
||||
if r.status_code != 200:
|
||||
print("Can not get last reward round info. Error: " + str(r))
|
||||
return -2
|
||||
return r.json()['Transcoder']['LastRewardRound']
|
||||
# end getLastRewardRound() ----------------------------------------------
|
||||
|
||||
|
||||
def getCurrentRound(url): # /currentRound
|
||||
# get current Round value
|
||||
try:
|
||||
r = requests.get(url + '/currentRound')
|
||||
except requests.exceptions.RequestException as e: # This is the correct syntax
|
||||
print("Error: can't get 'current Round' info.")
|
||||
return -1
|
||||
|
||||
if r.status_code != 200:
|
||||
print("Error: can't get 'current Round' info."+" ERROR: " + str(r))
|
||||
return -2
|
||||
|
||||
currentRound = int(r.content.hex(), 16)
|
||||
return currentRound
|
||||
# end getLastRewardRound() ----------------------------------------------
|
||||
|
||||
|
||||
def log(info):
|
||||
print("[", datetime.now(), "]", info)
|
||||
# end log(info) ----------------------------------------------
|
||||
|
||||
|
||||
url = parseArgs()
|
||||
statusOrch(url)
|
||||
print("")
|
||||
|
||||
while True:
|
||||
lastRewardRound = getLastRewardRound(url)
|
||||
currentRound = getCurrentRound(url)
|
||||
|
||||
log('Orchestrator status: ' + ('online' if pingOrch(url) else 'offline'))
|
||||
if (currentRound < 0 or lastRewardRound < 0):
|
||||
log("Is Orchestrator online ?")
|
||||
delay = retryTimeOffline
|
||||
else:
|
||||
log('Last reward round: ' + str(lastRewardRound))
|
||||
log('Current round: ' + str(currentRound))
|
||||
|
||||
if currentRound != lastRewardRound:
|
||||
log('Call reward!')
|
||||
r = requests.get(url + '/rewardss') # call reward
|
||||
log(r)
|
||||
if r.status_code == 200:
|
||||
log('Call reward success.')
|
||||
else:
|
||||
log('Call reward fail. Error: ' + str(r))
|
||||
|
||||
else:
|
||||
log('Do not call reward. ' + 'Reward for current round ' +
|
||||
str(currentRound) + ' already called.')
|
||||
delay = retryTimeReward
|
||||
|
||||
while delay > 0:
|
||||
print(". Next call: " + str(delay) + "s " + "\r", end="")
|
||||
sys.stdout.flush()
|
||||
delay = delay - 1
|
||||
time.sleep(1)
|
||||
print(" ")
|
||||
sys.stdout.flush()
|
||||
print("----------------------------")
|
Loading…
x
Reference in New Issue
Block a user