Closed ErcanYaman closed 1 year ago
Selam,
Site kaynaklı bir durum olduğu için pek müdahale edemiyorum ancak kodu buna göre şekillendirebilirsiniz. Örneğin, for
döngüsü yardımıyla her 10 hissede 30 saniye bekleyebilirsiniz. Değerleri kendinize göre optimize edebilirsiniz.
from isyatirimhisse import fetch_data
from datetime import date, timedelta
import asyncio
import nest_asyncio
nest_asyncio.apply()
async def fetch_data_for_symbols(symbols, start_date, end_date):
veriler = await fetch_data(
symbol=symbols,
start_date=start_date,
end_date=end_date,
frequency='1d',
drop_na=False,
language='tr'
)
return veriler
def calculate_returns(veriler):
veriler = veriler.sort_values(by='Tarih', ascending=False).fillna(method='ffill').dropna().iloc[[0, -1]].iloc[:, 1:]
getiri = round((veriler.iloc[0] / veriler.iloc[-1] - 1) * 100, 2)
return getiri
async def fetch_and_process_batch(symbol_batch, start_date, end_date):
veriler = await fetch_data_for_symbols(symbol_batch, start_date, end_date)
getiri = calculate_returns(veriler)
return getiri
async def main():
symbol_list = [] # sembol listesi
batch_size = 10
delay_seconds = 30
start_date = '31-12-' + str((date.today().year - 1))
end_date = (date.today() - timedelta(days=1)).strftime("%d-%m-%Y")
for i in range(0, len(symbol_list), batch_size):
batch_symbols = symbol_list[i:i + batch_size]
print(f"Fetching data for symbols: {batch_symbols}")
getiri = await fetch_and_process_batch(batch_symbols, start_date, end_date)
print(getiri)
if i + batch_size < len(symbol_list):
print(f"Waiting for {delay_seconds} seconds before the next batch...")
await asyncio.sleep(delay_seconds)
asyncio.run(main())
Selam,
Aşağıda toplam 400 sembolün olduğu script yaklaşık 2 dk çalıştıktan sonra keyError: value hatası aldı.
İnceleyebilir misiniz?
from isyatirimhisse import fetch_data from datetime import date, timedelta, datetime import asyncio
async def main(): symbol = ['AEFES','AFYON','AGESA','AGHOL','AHGAZ','AKCNS','AKFGY','AKFYE','AKGRT','AKSA','ALCTL','ALFAS','ALKIM','ANGEN','ANHYT','ANSGR', 'ARASE','ARCLK','ARDYZ','ARENA','ARSAN','ASUZU','AYDEM','AYEN','AYGAZ','AZTEK','BARMA','BERA','BIOEN','BLCYT','BOBET','BRISA', 'BRKVY','BRLSM','BRSAN','BRYAT','BTCIM','BUCIM','BVSAN','CANTE','CCOLA','CEMAS','CEMTS','CIMSA','CLEBI','CONSE','CVKMD','CWENE', 'DAPGM','DESA','DEVA','DGNMO','DOAS','DOHOL','DYOBY','ECILC','ECZYT','EGEEN','EGEPO','EGGUB','EGPRO','EGSER','EKSUN','ELITE','ENJSA', 'ENKAI','ERBOS','ERCB','EREGL','ESCAR','ESCOM','ESEN','EUREN','FROTO','GEDIK','GENIL','GENTS','GESAN','GLCVY','GLYHO','GOKNR', 'GOLTS','GOODY','GRSEL','GRTRK','GSDHO','GUBRF','GWIND','HEDEF','HEKTS','HKTM','HTTBT','HUNER','IMASM','INDES','INFO','INVEO', 'INVES','IPEKE','ISDMR','ISFIN','ISMEN','ISSEN','IZMDC','JANTS','KAREL','KARSN','KARTN','KATMR','KAYSE','KCAER','KCHOL','KERVT', 'KLKIM','KLMSN','KLRHO','KLSYN','KMPUR','KNFRT','KONKA','KONTR','KONYA','KOPOL','KORDS','KOZAA','KOZAL','KRPLS','KRVGD','KTLEV', 'KTSKR','LIDER','LOGO','MAGEN','MAKIM','MEDTR','MERCN','MGROS','MIATK','MNDRS','MNDTR','MOBTL','MPARK','MTRKS','NATEN','NETAS', 'NTGAZ','NUHCM','ONCSM','ORGE','OTKAR','OYAKC','OYYAT','OZKGY','PAMEL','PARSN','PASEU','PENGD','PENTA','PETKM','PETUN','PGSUS', 'PNLSN','PNSUT','POLHO','PRDGS','PRKAB','PRKME','QUAGR','RUBNS','RYSAS','SAHOL','SARKY','SASA','SAYAS','SELEC','SISE','SMRTG', 'SNICA','SOKM','SRVGY','SUNTK','SUWEN','TATGD','TCELL','TERA','TEZOL','TKFEN','TKNSA','TMSN','TOASO','TRCAS','TRILC','TTKOM', 'TTRAK','TUKAS','TUPRS','TUREX','TURSG','ULUUN','VAKKO','VERUS','VESBE','YATAS','YEOTK','YKSLN','YUNSA','YYLGD','ZOREN','AYES', 'BALAT','BASCM','CMENT','ISBIR','KENT','KLNMA','KSTUR','SNPAM','SODSN','SUMAS','TBORG','UMPAS','UZERB','YBTAS','YONGA','ATSYH', 'BRKO','BRMEN','CASA','DIRIT','EKIZ','EMNIS','KERVN','KUVVA','MMCAS','OTTO','ROYAL','SNKRN','ACSEL','ADEL','ADESE','AKENR','AKMGY', 'AKSUE','ALCAR','ALKA','ALMAD','ANELE','ARZUM','ATEKS','ATLAS','AVHOL','AVOD','AVTUR','AYCES','BAKAB','BANVT','BAYRK','BEYAZ', 'BFREN','BMSCH','BMSTL','BNTAS','BOSSA','BRKSN','BSOKE','BURCE','BURVA','CELHA','CEOEM','CMBTN','COSMO','CRDFA','CRFSA','DAGHL', 'DAGI','DARDL','DENGE','DERHL','DERIM','DESPC','DGATE','DITAS','DMSAS','DNISI','DOBUR','DOGUB','DOKTA','DURDO','EDATA','EDIP', 'EMKEL','ENSRI','EPLAS','ERSU','ETILR','ETYAT','EUHOL','FADE','FLAP','FMIZP','FORMT','FORTE','FRIGO','GARFA','GEDZA','GEREL', 'GLBMD','GLRYH','GMTAS','GSDDE','GZNMI','HATEK','HDFGS','HUBVC','HURGZ','ICUGS','IDEAS','IEYHO','INGRM','INTEM','ISGSY','ISKPL', 'ITTFH','IZFAS','IZINV','KAPLM','KARYE','KFEIN','KIMMR','KRONT','KRSTL','KRTEK','KUTPO','KUYAS','LIDFA','LINK','LKMNH','LUKSK', 'MAALT','MAKTK','MANAS','MARKA','MEGAP','MEPET','MERIT','MERKO','METUR','MIPAZ','MRSHL','MZHLD','NIBAS','OBASE','ORCAY','OSTIM', 'OYLUM','OZRDN','OZSUB','PAPIL','PCILT','PEKGY','PINSU','PKART','PKENT','PLTUR','POLTK','PRZMA','PSDTC','RALYH','RAYSG','RNPOL', 'RODRG','RTALB','SAFKR','SAMAT','SANEL','SANFM','SANKO','SEKFK','SEKUR','SELGD','SELVA','SEYKM','SOKE','SONME','TEKTU','TETMT', 'TGSAS','TLMAN','TMPOL','TNZTP','TUCLK','TURGG','UFUK','ULAS','ULUFA','ULUSE','USAK','VANGD','VBTYZ'] stock_market_index = ['XU100'] start_date = '31-12-' + str((date.today().year - 1)) end_date = (date.today() - timedelta(days=1)).strftime("%d-%m-%Y") frequency = '1d' drop_na = False language = 'tr'
async def run(): sonuc = await main() print(sonuc)
async def main_wrapper(): gorev = asyncio.create_task(run()) await gorev
asyncio.run(main_wrapper())
=================================== File "C:\Users\200055\Anaconda3\lib\asyncio\runners.py", line 44, in run return loop.run_until_complete(main) File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 616, in run_until_complete return future.result()
File "C:\Users\200055\Anaconda3\lib\site-packages\isyatirimhisse\FetchData.py", line 126, in fetch_data if result and result['value']: KeyError: 'value' Exception ignored in: <function _ProactorBasePipeTransport.del at 0x00000179136943A0> Traceback (most recent call last): File "C:\Users\200055\Anaconda3\lib\asyncio\proactor_events.py", line 116, in del self.close() File "C:\Users\200055\Anaconda3\lib\asyncio\proactor_events.py", line 108, in close self._loop.call_soon(self._call_connection_lost, None) File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 719, in call_soon self._check_closed() File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 508, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed Exception ignored in: <function _ProactorBasePipeTransport.del at 0x00000179136943A0> Traceback (most recent call last): File "C:\Users\200055\Anaconda3\lib\asyncio\proactor_events.py", line 116, in del self.close() File "C:\Users\200055\Anaconda3\lib\asyncio\proactor_events.py", line 108, in close self._loop.call_soon(self._call_connection_lost, None) File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 719, in call_soon self._check_closed() File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 508, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed Exception ignored in: <function _ProactorBasePipeTransport.del at 0x00000179136943A0> Traceback (most recent call last): File "C:\Users\200055\Anaconda3\lib\asyncio\proactor_events.py", line 116, in del self.close() File "C:\Users\200055\Anaconda3\lib\asyncio\proactor_events.py", line 108, in close self._loop.call_soon(self._call_connection_lost, None) File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 719, in call_soon self._check_closed() File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 508, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed Exception ignored in: <function _ProactorBasePipeTransport.del at 0x00000179136943A0> Traceback (most recent call last): File "C:\Users\200055\Anaconda3\lib\asyncio\proactor_events.py", line 116, in del self.close() File "C:\Users\200055\Anaconda3\lib\asyncio\proactor_events.py", line 108, in close self._loop.call_soon(self._call_connection_lost, None) File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 719, in call_soon self._check_closed() File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 508, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed Exception ignored in: <function _ProactorBasePipeTransport.del at 0x00000179136943A0> Traceback (most recent call last): File "C:\Users\200055\Anaconda3\lib\asyncio\proactor_events.py", line 116, in del self.close() File "C:\Users\200055\Anaconda3\lib\asyncio\proactor_events.py", line 108, in close self._loop.call_soon(self._call_connection_lost, None) File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 719, in call_soon self._check_closed() File "C:\Users\200055\Anaconda3\lib\asyncio\base_events.py", line 508, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed