Python Django:我可以使db查询异步吗?
在我的应用程序中,我有一个模板,我希望它像一个控制中心,可以显示大量的信息,所以我必须进行大量的查询来获取这些信息 因此,当然,页面速度非常慢,现在我正在考虑如何解决这个问题。 我曾想过制作索引,但我没有足够的空间。我已经优化了我的查询以尽可能减少浪费,但是加载页面仍然需要1:30分钟 我正在研究Django上的同步支持,但是我使用的Django版本似乎不支持(2.1) 有没有人能在这方面帮到我 我没有显示我的代码,因为我认为这不是必需的,因为这个问题更抽象。这不是关于我的问题,而是关于一般的优化。最好的方法是使用。Python Django:我可以使db查询异步吗?,python,django,Python,Django,在我的应用程序中,我有一个模板,我希望它像一个控制中心,可以显示大量的信息,所以我必须进行大量的查询来获取这些信息 因此,当然,页面速度非常慢,现在我正在考虑如何解决这个问题。 我曾想过制作索引,但我没有足够的空间。我已经优化了我的查询以尽可能减少浪费,但是加载页面仍然需要1:30分钟 我正在研究Django上的同步支持,但是我使用的Django版本似乎不支持(2.1) 有没有人能在这方面帮到我 我没有显示我的代码,因为我认为这不是必需的,因为这个问题更抽象。这不是关于我的问题,而是关于一般的优
尽管不推荐使用,但可以使用python线程池。 大概是这样的:
queries = {
'1': query_1, # These are your queries.
'2': query_2,
'3': query_3,
'4': query_4,
}
# Since queries are lazy in Django, they have not been evaluated, yet.
# creating a threadpool
pool = ThreadPool(processes=int(len(queries) * 0.5))
threads = dict()
results = {}
for key in queries.keys():
threads[key] = pool.apply_async(lambda f: f, args=(queries[key], ))
# wait for all threads to finish
for key, item in threads.items():
results[key] = item.get()
现在,您的查询将以异步方式进行计算。Cellery/Django Channels更像是一个缩放问题。