使用 @Async 异步任务,出现了一个问题:
问题的产生:由于使用异步导致,插入的 *** 作没有及时返回结果
同步是指前台用户 *** 作的时候,后台数据库也一起 *** 作,一般用户密码等信息属于同步 *** 作。异步 *** 作一般是指定时处理的一些东西,即前台 *** 作完成之后,将进入到一个队列,后台有队列来轮询处理,异步 *** 作多用于 *** 作时间比较长,或者数据量非常大的时候。
用tornado毕竟是可以做异步request的, 如果你的数据库真的很慢, 不如再开其他的tornado做block数据库 *** 作(你可以用tornado wsgi多线程/多进程形式部署, 也可以用django, flask等), 然后通过API的形式将数据库返回过来. 相当于用tornado给你的数据库 *** 作web化(写内部数据API)这个是我刚才刚刚想到的, 原理就是用一些独立的进程去做费时的数据库 *** 作, 这样你的主web tornado进程就可以异步畅通, 增加吞吐量. 这样就不需要为各个数据库写驱动了.
如果数据库在不同的机器上, 那么可以考虑将这些独立的数据 *** 作tornado进程在数据库机器上部署. 使用wsgi多线程/多进程的好处是查询可以同时进行, 当然也可能卡死数据库. 使用tornado自己的单进程异步部署的时候, tornado还可以充当一个数据库 *** 作队列的作用.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)