@ -2,6 +2,7 @@
Alpaca bars → AlpacaPriceData conversion and DB storage
Alpaca bars → AlpacaPriceData conversion and DB storage
"""
"""
import asyncio
import logging
import logging
from datetime import datetime , timezone
from datetime import datetime , timezone
from typing import Dict , List , Optional
from typing import Dict , List , Optional
@ -84,6 +85,7 @@ class AlpacaPriceService:
stmt = stmt . on_conflict_do_nothing ( constraint = ' uq_alpaca_price_data ' )
stmt = stmt . on_conflict_do_nothing ( constraint = ' uq_alpaca_price_data ' )
result = await db . execute ( stmt )
result = await db . execute ( stmt )
inserted + = result . rowcount
inserted + = result . rowcount
await asyncio . sleep ( 0 ) # yield event loop between chunks
await db . commit ( )
await db . commit ( )
if inserted :
if inserted :
@ -183,6 +185,7 @@ class AlpacaPriceService:
stmt = pg_insert ( AlpacaPriceData ) . values ( rows [ i : i + CHUNK ] )
stmt = pg_insert ( AlpacaPriceData ) . values ( rows [ i : i + CHUNK ] )
stmt = stmt . on_conflict_do_nothing ( constraint = " uq_alpaca_price_data " )
stmt = stmt . on_conflict_do_nothing ( constraint = " uq_alpaca_price_data " )
await db . execute ( stmt )
await db . execute ( stmt )
await asyncio . sleep ( 0 ) # yield event loop between chunks
await db . commit ( )
await db . commit ( )
logger . info (
logger . info (
f " Alpaca multi-bars: stored { len ( rows ) } rows for { len ( need_fetch ) } tickers "
f " Alpaca multi-bars: stored { len ( rows ) } rows for { len ( need_fetch ) } tickers "
@ -203,6 +206,7 @@ class AlpacaPriceService:
. order_by ( AlpacaPriceData . ticker , AlpacaPriceData . date )
. order_by ( AlpacaPriceData . ticker , AlpacaPriceData . date )
)
)
db_rows = result . scalars ( ) . all ( )
db_rows = result . scalars ( ) . all ( )
await asyncio . sleep ( 0 ) # yield after bulk ORM object creation
data : Dict [ str , List [ AlpacaPriceData ] ] = { t : [ ] for t in upper_tickers }
data : Dict [ str , List [ AlpacaPriceData ] ] = { t : [ ] for t in upper_tickers }
for row in db_rows :
for row in db_rows :