【问题标题】:Choice of technology技术选择
【发布时间】:2021-10-13 03:27:49
【问题描述】:

您可能已经知道,python3 是一个单线程、单处理器程序,这似乎与仅由完整 python 和瓶子(Web 服务器)组成的状态的 tinydb (json) 配合得很好。

在一个您希望在预生产或早期生产和低流量(每周

我想知道的两件事是:

a) 数据隔离(或并发):但由于一切都是单线程的,处理器将完成排队 CRUD 操作的工作,一个接一个,不会有任何并发​​访问但是关于低流量,我应该关心吗?

b) 等待时间,当处理器排队 10 个人想要访问存储在 ram 中的同一个表时,处理器将对请求进行排队,人们将有等待时间。现在的问题是这是否会引起人们的注意,Python 速度很快(毫秒)。但是我真的不知道如何统计测试 50 ppl 同时连接到网站并请求相同的资源。

我愿意接受所有反馈,请告诉我。

【问题讨论】:

    标签: python-3.x bottle tinydb


    【解决方案1】:

    如果您要进行如此低的流量 + 非常快的仅 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 事物都会打破您的假设,因此以较小的开销为代价,使用更大的并发数据库等可能会更好。 ?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-03
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 2011-12-08
      • 2011-12-26
      • 1970-01-01
      相关资源
      最近更新 更多