你好,我已经构建了一个 Flask 网站,并使用 uWSGI 进行了部署。除了使用 apscheduler 运行的数据库更新代码之外,一切似乎都按预期工作。我有一个对象,它本质上包含一些数据字典,我想使用 apscheduler 每小时更新一次。当我尝试正常访问该对象时,一切都按预期进行。但是,当我尝试将对象与 apschedulerBackgroundScheduler 一起使用时,该对象不包含任何数据,即使它位于同一内存位置!当在烧瓶页面中执行时,它会产生: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然而,当由 apscheduler 作业调用时,它会给出: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这里对象的内存位置与以前相同!但是当调度程序调用时_content_dict 包含一个空字典?(数据不会被删除,因为当我之后再次正常调用它时它仍然存在。)当我使用 Flask 的内置开发服务器时,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有人可以解释为什么当使用 apscheduler 调用数据时,数据不存在吗?即使对象内存位置相同?或者我应该如何运行每小时数据库更新功能?
添加回答
举报
0/150
提交
取消