From 31bb4a6134e6cabe284af18befca74ad91fb640b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Eckel?= Date: Sat, 3 Sep 2022 13:16:13 +0200 Subject: [PATCH] added energe metering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jürgen Eckel --- planetmint/lib.py | 6 ++++++ planetmint/meter.py | 14 ++++++++++++++ planetmint/start.py | 5 +++-- setup.py | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 planetmint/meter.py diff --git a/planetmint/lib.py b/planetmint/lib.py index b44953a..07527e6 100644 --- a/planetmint/lib.py +++ b/planetmint/lib.py @@ -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.""" diff --git a/planetmint/meter.py b/planetmint/meter.py new file mode 100644 index 0000000..bfb0dd3 --- /dev/null +++ b/planetmint/meter.py @@ -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) + + + + \ No newline at end of file diff --git a/planetmint/start.py b/planetmint/start.py index c911c66..9a0abbd 100644 --- a/planetmint/start.py +++ b/planetmint/start.py @@ -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() diff --git a/setup.py b/setup.py index a42a6d5..d018f5f 100644 --- a/setup.py +++ b/setup.py @@ -128,6 +128,7 @@ install_requires = [ "werkzeug==2.0.3", "nest-asyncio==1.5.5", "protobuf==3.20.1", + "pyjoules", ] setup(