mirror of
https://github.com/twisterarmy/twister-data-guard.git
synced 2025-03-12 21:41:13 +00:00
optimize next block counting on errors, fix bugs, remove script locking
This commit is contained in:
parent
76fd98ba08
commit
72f351522a
@ -17,8 +17,7 @@ blocksInStep = 100 # blocks processing by the one step
|
|||||||
squattersStop = 20 # max users per block. Reset the blocksInStep on this quantity to prevent CPU overload
|
squattersStop = 20 # max users per block. Reset the blocksInStep on this quantity to prevent CPU overload
|
||||||
|
|
||||||
class MyDb:
|
class MyDb:
|
||||||
lastBlockHash = 0
|
nextBlockHash = False
|
||||||
dataLock = False
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from bitcoinrpc.authproxy import AuthServiceProxy
|
from bitcoinrpc.authproxy import AuthServiceProxy
|
||||||
@ -36,52 +35,44 @@ twister = AuthServiceProxy(serverUrl)
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
db = cPickle.load(open(dbFileName))
|
db = cPickle.load(open(dbFileName))
|
||||||
nextHash = db.lastBlockHash
|
|
||||||
dataLock = db.dataLock
|
|
||||||
except:
|
except:
|
||||||
db = MyDb()
|
db = MyDb()
|
||||||
nextHash = twister.getblockhash(0)
|
|
||||||
dataLock = db.dataLock
|
|
||||||
|
|
||||||
if not dataLock:
|
print "blockchain reading..."
|
||||||
|
|
||||||
db.dataLock = True
|
while True:
|
||||||
cPickle.dump(db, open(dbFileName, "w"))
|
|
||||||
|
|
||||||
print "blockchain reading..."
|
block = twister.getblock(db.nextBlockHash)
|
||||||
|
|
||||||
while True:
|
if squattersStopCurrent < 0:
|
||||||
|
break
|
||||||
|
|
||||||
block = twister.getblock(nextHash)
|
blocksInStep = blocksInStep - 1
|
||||||
db.lastBlockHash = block["hash"]
|
|
||||||
|
|
||||||
if squattersStopCurrent < 0:
|
if blocksInStep < 0:
|
||||||
db.dataLock = False
|
break
|
||||||
break
|
|
||||||
|
|
||||||
blocksInStep = blocksInStep - 1
|
print "read block", str(block["height"])# + "\r",
|
||||||
|
|
||||||
if blocksInStep < 0:
|
squattersStopCurrent = squattersStop
|
||||||
db.dataLock = False
|
|
||||||
break
|
|
||||||
|
|
||||||
print "read block", str(block["height"])# + "\r",
|
for u in block["usernames"]:
|
||||||
|
print "follow", u
|
||||||
|
twister.follow(nodeUserName, [u])
|
||||||
|
squattersStopCurrent = squattersStopCurrent - 1
|
||||||
|
|
||||||
squattersStopCurrent = squattersStop
|
if block.has_key("nextblockhash"):
|
||||||
|
|
||||||
for u in block["usernames"]:
|
db.nextBlockHash = block["nextblockhash"]
|
||||||
print "follow", u
|
|
||||||
twister.follow(nodeUserName, [u])
|
|
||||||
squattersStopCurrent = squattersStopCurrent - 1
|
|
||||||
if block.has_key("nextblockhash"):
|
|
||||||
nextHash = block["nextblockhash"]
|
|
||||||
else:
|
|
||||||
print "database is up to date..."
|
|
||||||
break
|
|
||||||
|
|
||||||
cPickle.dump(db, open(dbFileName, "w"))
|
print "save block state."
|
||||||
|
cPickle.dump(db, open(dbFileName, "w"))
|
||||||
|
|
||||||
print "task completed."
|
else:
|
||||||
|
print "database is up to date..."
|
||||||
|
break
|
||||||
|
|
||||||
|
print "task completed."
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print "operation locked by the running process."
|
print "operation locked by the running process."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user