你好,我已經(jīng)構(gòu)建了一個(gè) Flask 網(wǎng)站,并使用 uWSGI 進(jìn)行了部署。除了使用 apscheduler 運(yùn)行的數(shù)據(jù)庫(kù)更新代碼之外,一切似乎都按預(yù)期工作。我有一個(gè)對(duì)象,它本質(zhì)上包含一些數(shù)據(jù)字典,我想使用 apscheduler 每小時(shí)更新一次。當(dāng)我嘗試正常訪問該對(duì)象時(shí),一切都按預(yù)期進(jìn)行。但是,當(dāng)我嘗試將對(duì)象與 apschedulerBackgroundScheduler 一起使用時(shí),該對(duì)象不包含任何數(shù)據(jù),即使它位于同一內(nèi)存位置!當(dāng)在燒瓶頁(yè)面中執(zhí)行時(shí),它會(huì)產(chǎn)生:hex id of object: 0x7f58a5e88a60hex id of object.prices: 0x7f58a5e88ac0hex id of object.prices._content_dict: 0x7f58ab0a8180_content_dict: {625: (12925714.285714285, 9044000.0), 34: (8.528115645081806, 8.0), 35: (13.499491140271743, 35.0), 36: (109.86576894948205, 113.1), 37: (37.98743083746043, 42.64), 38: (1311.6629430032253, 1225.0), 39: (1347.7675049393822, 1354.0), 40: (808.3051410710929, 787.0)}type: <class 'app.EVE_interfaces.EVE_ESI_interface.ESI_data_obj'>prices length: 8然而,當(dāng)由 apscheduler 作業(yè)調(diào)用時(shí),它會(huì)給出:hex id of object: 0x7f58a5e88a60hex id of object.prices: 0x7f58a5e88ac0hex id of object.prices._content_dict: 0x7f58ab0a8180_content_dict: {}type: <class 'app.EVE_interfaces.EVE_ESI_interface.ESI_data_obj'>prices length: 0這里對(duì)象的內(nèi)存位置與以前相同!但是當(dāng)調(diào)度程序調(diào)用時(shí)_content_dict 包含一個(gè)空字典?(數(shù)據(jù)不會(huì)被刪除,因?yàn)楫?dāng)我之后再次正常調(diào)用它時(shí)它仍然存在。)當(dāng)我使用 Flask 的內(nèi)置開發(fā)服務(wù)器時(shí),apscheduler 更新功能工作正常,但不適用于 uWSGI。apscheduler 配置如下:# run update once at the startupdate()# set up scheduler to repeatedly update ESI datascheduler = BackgroundScheduler()scheduler.add_job(func=update, trigger='interval', minutes=_ESI_update_interval)scheduler.start()# Shut down the scheduler when exiting the appatexit.register(lambda: scheduler.shutdown())我的uWSGI.ini如下:[uwsgi]module = main:flask_appmaster = trueprocesses = 1 enable-threads = truesingle-interpreter = truesocket = web_app.sockchmod-socket = 660vacuum = truedie-on-term = truelogto = /home/mainuser/web_app/uwsgi_logs/%n.log有人可以解釋為什么當(dāng)使用 apscheduler 調(diào)用數(shù)據(jù)時(shí),數(shù)據(jù)不存在嗎?即使對(duì)象內(nèi)存位置相同?或者我應(yīng)該如何運(yùn)行每小時(shí)數(shù)據(jù)庫(kù)更新功能?
1 回答

慕仙森
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
我還不確定為什么,但補(bǔ)充一下:
lazy-apps = true
到uWSGI.ini文件,修復(fù)了問題
添加回答
舉報(bào)
0/150
提交
取消