Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:我可以使db查询异步吗?_Python_Django - Fatal编程技术网

Python Django:我可以使db查询异步吗?

Python Django:我可以使db查询异步吗?,python,django,Python,Django,在我的应用程序中,我有一个模板,我希望它像一个控制中心,可以显示大量的信息,所以我必须进行大量的查询来获取这些信息 因此,当然,页面速度非常慢,现在我正在考虑如何解决这个问题。 我曾想过制作索引,但我没有足够的空间。我已经优化了我的查询以尽可能减少浪费,但是加载页面仍然需要1:30分钟 我正在研究Django上的同步支持,但是我使用的Django版本似乎不支持(2.1) 有没有人能在这方面帮到我 我没有显示我的代码,因为我认为这不是必需的,因为这个问题更抽象。这不是关于我的问题,而是关于一般的优

在我的应用程序中,我有一个模板,我希望它像一个控制中心,可以显示大量的信息,所以我必须进行大量的查询来获取这些信息

因此,当然,页面速度非常慢,现在我正在考虑如何解决这个问题。 我曾想过制作索引,但我没有足够的空间。我已经优化了我的查询以尽可能减少浪费,但是加载页面仍然需要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更像是一个缩放问题。