[英]Run part of a Flask python code once a day
我終於設法通過使用 ftp 下載信息來創建一個 postgres 表。
該數據庫存儲超過 11,000 個股票代碼和其他數據,每次調用 function 時都需要花費時間來構建。
function 是否有可能每天早上只在特定時間運行,數據庫將被更新?
此外,在 Flask 應用程序結構中寫入此 function 的最佳位置是什么?
function 是:
def symbol_search():
flo = BytesIO()
directory = 'symboldirectory'
filenames = ('otherlisted.txt', 'nasdaqlisted.txt')
ftp = FTP('ftp.nasdaqtrader.com')
ftp.login()
ftp.cwd(directory)
#Create pandas dataframes of stock symbols from the nasdaqlisted and otherlisted files.
for item in filenames:
nasdaq_exchange_info=[]
ftp.retrbinary('RETR ' + item, flo.write)
flo.seek(0)
nasdaq_exchange_info.append(pd.read_fwf(flo))
ftp.quit()
nasdaq_exchange_info=pd.concat(nasdaq_exchange_info, axis=1)
nasdaq_exchange_info[['symbol', 'name', 'Exchange', 'Symbol', 'etf', 'Lot_size', 'Test', 'NASDAQ_Symbol']]=nasdaq_exchange_info['ACT Symbol|Security Name|Exchange|CQS Symbol|ETF|Round Lot Size|Test Issue|NASDAQ Symbol'].str.split('|', expand=True)
nasdaq_exchange_info=nasdaq_exchange_info.drop(nasdaq_exchange_info.columns[[0]], axis=1).dropna()
nasdaq_exchange_info=nasdaq_exchange_info[nasdaq_exchange_info.Test != 'Y']
nasdaq_exchange_info=nasdaq_exchange_info[nasdaq_exchange_info.symbol != 'Y']
nasdaq_exchange_info=nasdaq_exchange_info[~nasdaq_exchange_info.symbol.str.contains('symbol')]
nasdaq_exchange_info=nasdaq_exchange_info[~nasdaq_exchange_info.symbol.str.contains('File')]
nasdaq_exchange_info=nasdaq_exchange_info[~nasdaq_exchange_info.name.str.contains('%')]
nasdaq_exchange_info=nasdaq_exchange_info[~nasdaq_exchange_info.name.str.contains('arrant')]
nasdaq_exchange_info=nasdaq_exchange_info.drop(['Symbol', 'Exchange', 'Lot_size', 'Test', 'NASDAQ_Symbol', 'etf'], axis = 1)
nasdaq_exchange_info=nasdaq_exchange_info[['name', 'symbol']].values.tolist()
return nasdaq_exchange_info
您可以使用APScheduler庫。
from apscheduler.schedulers.blocking import BlockingScheduler
#...
scheduler = BackgroundScheduler(timezone="Europe/Rome")
# Runs from Monday to Friday at 5:30 (am)
scheduler.add_job(
func=search,
trigger="cron",
max_instances=1,
day_of_week='mon-fri',
hour=5,
minute=30
)
scheduler.start()
查看此鏈接以更好地了解如何設置觸發器以調用 function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.