正如您可能已经知道的,python3是一个单线程的单处理器程序,这似乎与tinydb (json)非常适用,该状态只由完整的python以及瓶(web服务器)组成。
在这样一个世界里,你想要在生产前或早期生产中有一些东西,并且流量低(每周<100 ppl ),你认为有一个使用内置HTTP服务器(python)和tinydb作为数据库的运行瓶网站的想法是什么?
我想知道的两件事是:
( a) 数据隔离(或并发性):但是由于每件事都是单线程的,处理器将负责依次排队CRUD操作,因此不会有任何并发访问,但对于低流量,我应该关心吗?
( b) 等待时间,当处理器排队10 ppl,希望访问存储在ram中的同一个表时,处理器将对请求进行排队,人们将有等待时间。现在的问题是,Python是快速的(milisec),这是否是人类所能注意到的。然而,我真的不知道如何统计测试50 ppl在同一时间连接到网站,并要求相同的资源。
我愿意接受每一个反馈,让我知道。
发布于 2021-08-11 05:36:54
如果您要有这么低的流量+非常快的RAM操作,那么它似乎是值得的选择,也很容易测试。
import bottle
a = bottle.Bottle()
@a.get('/')
def root():
return {'cheese': ''}
if __name__ == '__main__':
a.run()
我们的test_file:
import time
import requests
from concurrent.futures import ThreadPoolExecutor
def test(index):
requests.get('http://localhost:8080/').raise_for_status()
pool = ThreadPoolExecutor(max_workers=10)
for i in (1, 10, 50, 100, 1000):
t = time.time()
pool.map(test, range(i))
print(i, 'took', time.time() - t)
print('')
在我的Mac上,这是输出:
1取0.00046515464782714844 10取0.003888845443725586 50取0.0003077983856201172 100取0.0006000995635986328 1000取0.0058138370513916016
这确实是不明显的。也就是说,以后将添加的每一个IO/CPU/presistancy都会打破您的假设,因此,在开销较小的情况下,最好使用一个更大的并发DB等等。
https://stackoverflow.com/questions/68712012
复制相似问题