Я работаю над приложением, чтобы извлечь данные учетной записи и баланса из 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
Xrpl -py API - скорость вызова и больший пакетный поиск ⇐ Python
Программы на Python
-
Anonymous
1737744942
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79385231/xrpl-py-api-call-speed-and-larger-batch-retrieval[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия