我正在和Uwsgi一起使用Django。我们有8个进程在运行,我没有真正的迹象表明我们的代码特别是线程安全,因为它从来没有考虑到线程。
最近,我们添加了通过各种API从服务供应商处获取实时费率并立即为用户显示的功能。问题是这些请求是旧的Web服务技术,并且由于它们的响应时间,在获得供应商的所有费率(或者它放弃)之前所需的时间可能长达10秒。
这是一个问题。我们的网站拥有相当不错的流量,客户需要经常查看这些费率。只有8个进程,很容易看出服务器如何等待这些上游请求。特别是当需要进行其他优化以使站点基线更快时(我们正在努力)。
我们创建了一个单独的库(应该主要是线程安全的,如果没有,应该很容易转换为它),请求速率,我们可以分离出它的配置。所以我想用自己的线程创建一个单独的服务,也许是在Twisted中,让浏览器联系JSON服务,而不是让它在主Django服务器上运行。
这个解决方案是好的吗?你能想到更好或更简单的方法吗?我应该使用Twisted以外的东西,如果是,为什么?