Xrpl -py API - скорость вызова и больший пакетный поискPython

Программы на Python
Ответить
Anonymous
 Xrpl -py API - скорость вызова и больший пакетный поиск

Сообщение Anonymous »

Я работаю над приложением, чтобы извлечь данные учетной записи и баланса из xrpl mainnet, используя API xrpl-py, не зная информацию об учетной записи (кошелек) Документация API xrpl-py: xrpl-py api < /p>
xrpl использует страницу с использованием маркера, и поэтому конструкция-это сериализованный трубопровод, требующий получения партии данных перед следующей партией Данные можно извлечь (если я не дезинформирован?). Миллионы учетных записей (кошельки) и растущий каждый день, потребуется примерно 8 часов, чтобы получить все данные (не при условии ошибок извлечения), которые со временем будут расти только по мере роста числа счетов с массовым внедрением. .
Наконец, поскольку состояние учетных записей изменяется, я хочу часто переназначать все данные, в идеале, один раз в день (если возможно), но, учитывая 8 часов, которые в настоящее время потребуются, я полагаю, что я мог бы Живите с раз в неделю, но это, вероятно, будет проблемой, когда данные станут намного больше. Является ли моя цель почти невозможной задачей? < /p>
Вот мой код: < /p>
from xrpl.clients import JsonRpcClient
from xrpl.models.requests import LedgerData
import time

# Connect to the XRPL mainnet
client = JsonRpcClient("https://s1.ripple.com:51234")

# Function to fetch data
def fetch_page(marker=None):
ledger_data = LedgerData(
ledger_index=latest_ledger,
binary=False,
marker=marker
)
response = client.request(ledger_data)
if not response.is_successful():
raise ValueError("Failed to fetch ledger data.")
else:
return response.result['state'], response.result.get('marker')

# Function to process data
def process_data(data,accounts):
for obj in data:
if obj['LedgerEntryType'] == 'AccountRoot':
accounts.append({'address': obj['Account'],
'balance': int(obj['Balance']) / 1000000 # Convert drops to number of coins
})
return accounts

latest_ledger = client.request(LedgerData(ledger_index="validated")).result['ledger_index']

accounts = []

while True:
current_marker = None
loop_start_time = time.time() # Start timing

# Fetch data
state, current_marker = fetch_page(current_marker)

# Process data
accounts = process_data(state,accounts)

loop_end_time = time.time() # Start timing
loop_time_elapsed = loop_end_time - loop_start_time

print(f"Total time for pagination call/processing: {loop_time_elapsed:.3f} seconds")

if not current_marker: # No more pages
break
< /code>
Пример вывода. Запуск Script: < /p>
Total time for pagination call/processing: 0.537 seconds
Total time for pagination call/processing: 0.552 seconds
Total time for pagination call/processing: 0.549 seconds
Total time for pagination call/processing: 0.564 seconds
Total time for pagination call/processing: 0.538 seconds
Total time for pagination call/processing: 1.691 seconds
Total time for pagination call/processing: 1.313 seconds
Total time for pagination call/processing: 1.325 seconds
Total time for pagination call/processing: 1.025 seconds
Total time for pagination call/processing: 1.018 seconds
Total time for pagination call/processing: 1.054 seconds
Total time for pagination call/processing: 1.013 seconds
Total time for pagination call/processing: 1.014 seconds
Total time for pagination call/processing: 1.024 seconds
Total time for pagination call/processing: 1.025 seconds
Total time for pagination call/processing: 1.406 seconds
Total time for pagination call/processing: 1.038 seconds
Total time for pagination call/processing: 1.049 seconds
Total time for pagination call/processing: 1.300 seconds
Total time for pagination call/processing: 1.046 seconds
Total time for pagination call/processing: 0.918 seconds
Total time for pagination call/processing: 1.230 seconds
Total time for pagination call/processing: 1.019 seconds
Total time for pagination call/processing: 1.023 seconds
Total time for pagination call/processing: 1.022 seconds
Total time for pagination call/processing: 1.238 seconds
Total time for pagination call/processing: 1.015 seconds
Total time for pagination call/processing: 1.037 seconds
Total time for pagination call/processing: 1.131 seconds
Total time for pagination call/processing: 1.020 seconds
Total time for pagination call/processing: 1.211 seconds
Total time for pagination call/processing: 1.035 seconds
Total time for pagination call/processing: 1.030 seconds
Total time for pagination call/processing: 1.028 seconds


Подробнее здесь: https://stackoverflow.com/questions/793 ... -retrieval
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»