Pulled down yagna version to 0.13.3, as allocation creation is version-sensitive
Reworked main loop of network stats, as #181 exposed problem with graceful shutdown while using asyncio.run
Changed flow with _consume_draft_proposals to use asyncio.wait_for instead of asyncio.wait, as in this way we don't need to handle its cancellation manually
Introduced DeviceListAllocationPayMentManager which has allocation creation based on payment devices, instead of account lists - this change is a step towards yagna 0.15 support. Note that placement is not random, as yagna 0.15+ does not have API endpoint to fetch the device list, and it must be done at CLI level, which is used only on ray-on-golem, and not in api-centric golem-core
Added suggested heads extra scoring to network stats
Made proposal concurrency smaller, to not overshoot the currently available amount of suggested heads on the mainnet
Made proposal expiration time smaller, to avoid generating warnings about too-late expiration
Made suggested heads score boost bigger to keep them at the top of the proposal scoring
Added --sender argument in case of mainnet fund preparation
Notable remarks:
While executing asyncio.run(func()), KeyboardInterrupt can be raised in a random place (it could be somewhere in func or somewhere in event loop internals), stopping func execution. asyncio.run will catch that exception and will try to cancel all remaining tasks at once. In this way, we can't control the order of graceful shutdown. This should work in python 3.11+, but we are stuck in python 3.8.
Yagna 0.15+ have reworked payment flow, where accounts are automatically prepared when needed, so yagna payments init --sender --network polygon is not needed at all.
Requires https://github.com/golemfactory/golem-core-python/pull/147 to be merged.
What I've done:
0.13.3
, as allocation creation is version-sensitiveasyncio.run
_consume_draft_proposals
to useasyncio.wait_for
instead ofasyncio.wait
, as in this way we don't need to handle its cancellation manuallyDeviceListAllocationPayMentManager
which has allocation creation based on payment devices, instead of account lists - this change is a step towards yagna 0.15 support. Note that placement is not random, as yagna 0.15+ does not have API endpoint to fetch the device list, and it must be done at CLI level, which is used only on ray-on-golem, and not in api-centric golem-core--sender
argument in case of mainnet fund preparationNotable remarks:
asyncio.run(func())
,KeyboardInterrupt
can be raised in a random place (it could be somewhere infunc
or somewhere in event loop internals), stoppingfunc
execution.asyncio.run
will catch that exception and will try to cancel all remaining tasks at once. In this way, we can't control the order of graceful shutdown. This should work in python 3.11+, but we are stuck in python 3.8.yagna payments init --sender --network polygon
is not needed at all.