
目前的情况是,一个 Tornado 进程, 然后按我的理解,请求来了以后,会自己开线程处理的。 那么问题来了:
1、多个进程同时读取SQLite,会有锁定么? 网上说多个进程可以同时读写,但说写的时候有锁定,那读的时候,是不是都能立马返回?如果可以立马返回, 那应该可以开多个 Tornado 了吧?
2、多个线程之间,不能共享句柄么?网上说,多线程之间共享句柄可能存在问题,那多线程查询的话,每次要connect,然后在close么? 怎么样能在 Tornado 里保持SQLite的长连接呢?
目前的需求是: SQLite 只读,没有写的需求。
1 tabris17 2015 年 2 月 26 日 Tornado是单线程的 |
6 mengskysama 2015 年 2 月 26 日 tornodo是NIO框架,不能阻塞,不是排队的问题了,浏览器的请求是根本不会accept。 |
7 mengskysama 2015 年 2 月 26 日 SQLite多线程同时操真不好说,还是mysql吧,推荐你用这个https://github.com/PyMySQL/Tornado-MySQL |
8 mengskysama 2015 年 2 月 26 日 Tornado-MySQL好像是我能找到的最,上面这个SQL协议完全用tornado的框架重写了。sqllite多线程同时操作的话会有锁的问题。我之前也试过几个你可以参考下。http://blog.mengsky.net/tornado-mysqlyi-bu-shi-xian-na-jia-qiang/..还有Tornado和SQLite这个组合怪怪的 |
9 pandada8 2015 年 2 月 26 日 如果不是多读少写或者开发时使用,建议不要使用Sqlite |
10 feelapi 2015 年 2 月 26 日 http://uri.agassi.co.il/2014/10/using-sqlite-for-production.html 看看这个,如果是只读的话,还是不错的。可以生成只读数据供前台用。 |
11 mengskysama 2015 年 2 月 26 日 非要用sqlite的话建议把需要把同步的调用"变成"异步的,而不是开多个tornado。 建议使用future的线程池来实现,参考http://lbolla.info/blog/2013/01/22/blocking-tornado sqlite还要有严格的读写互斥。 |
12 mathgl 2015 年 3 月 5 日 via Android 用线程池,共享conn是没问题的。可以考虑用apsw。比标准库的好些。 |
13 sivacohan PRO SQLite官网就说了。目标是替代fopen不是替代MySQL等东西。 简单做demo可以,生产环境还是不要用了吧。 |