added energe metering

Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
This commit is contained in:
Jürgen Eckel 2022-09-03 13:16:13 +02:00
parent e41ce5df76
commit 31bb4a6134
4 changed files with 24 additions and 2 deletions

View File

@ -37,6 +37,9 @@ from planetmint.validation import BaseValidationRules
logger = logging.getLogger(__name__)
from pyJoules.energy_meter import measure_energy
from planetmint.meter import csv_handler, create_handler
class Planetmint(object):
"""Planetmint API
@ -74,6 +77,8 @@ class Planetmint(object):
else:
self.validation = BaseValidationRules
self.connection = connection if connection is not None else planetmint.backend.connect()
create_handler()
def post_transaction(self, transaction, mode):
"""Submit a valid transaction to the mempool."""
@ -358,6 +363,7 @@ class Planetmint(object):
return [block["height"] for block in blocks]
@measure_energy(handler=csv_handler)
def validate_transaction(self, tx, current_transactions=[]):
"""Validate a transaction against the current status of the database."""

14
planetmint/meter.py Normal file
View File

@ -0,0 +1,14 @@
from pyJoules.handler.csv_handler import CSVHandler
import random
filename = '/tmp/result' + str( random.randint(0,1000) ) + '.csv'
csv_handler = CSVHandler(filename)
def create_handler():
filename = '/tmp/result' + str( random.randint(0,1000) ) + '.csv'
csv_handler = CSVHandler(filename)

View File

@ -13,7 +13,7 @@ from planetmint.parallel_validation import ParallelValidationApp
from planetmint.web import server, websocket_server
from planetmint.events import Exchange, EventTypes
from planetmint.utils import Process
from planetmint.meter import csv_handler, create_handler
logger = logging.getLogger(__name__)
@ -39,6 +39,7 @@ def start(args):
logger.info("Starting Planetmint")
exchange = Exchange()
# start the web api
create_handler()
app_server = server.create_server(
settings=Config().get()["server"], log_config=Config().get()["log"], planetmint_factory=Planetmint
)
@ -80,7 +81,7 @@ def start(args):
)
)
app.run()
csv_handler.save_data()
if __name__ == "__main__":
start()

View File

@ -128,6 +128,7 @@ install_requires = [
"werkzeug==2.0.3",
"nest-asyncio==1.5.5",
"protobuf==3.20.1",
"pyjoules",
]
setup(