我已经开始使用带有flask_restplus的python3进行一个小项目,我需要投入生产,所以我面临着重新编写代码的需要,并且我需要一些建议以使其更加健壮,这是我的问题的描述:>
此代理会定期从其他服务请求一些数据,并通过REST API公开数据,以便UI可以使用它。由于UI需要实时显示数据,例如下拉列表,动态字段更新,因此代理保存的某些数据会缓存在内存中,以便为用户提供实时体验,而无需等待3秒等待下拉列表显示XD。>
因此,为了构建缓存,我将大量数据存储在全局变量字典类型中,因为来自其他服务的所有响应都是JSON,这使我可以在以下情况下快速检索/使用某些数据:需要。
dataCache = {} #this is where I store the cache items
def refresh_cache(): #function to refresh cache periodically
start = time.time()
#Get all service desks
get_all_project()
#Get all organizations
get_all_organizations_by_project()
#Get all customers by Desks
get_all_customers_by_project()
print("Refresh Cache Took "+str(time.time()-start)+"")
threading.Timer(app.config['CACHE_REFRESH'], refresh_cache).start()
我知道这是一个糟糕的主意,但是为了草拟版本并验证需求可以正常工作,但是现在我需要发展。
什么是替换此awfull全局变量的有效选项?
我考虑一下,为了速度而在内存中安装一个sqlite3,并将所有这些数据存储在那里,因为在大多数情况下,我需要在处理此问题时使用for循环和IF语句执行一些“ SQL联接查询”数据发送到UI之前。 例如
for rType in dataCache[companyName]['types']:
if dataCache[companyName]['projectId']==id:
bla bla bla bla
PS:我不需要矫kill过正/企业解决方案,因为用户数量不会超过1k倍。