处理Django长期运行的上游请求的最快,最简单的方法

我起床

我在Uwsgi中使用Django。我们有8个进程正在运行,并且我没有真正的迹象表明我们的代码特别线程安全,因为它从来没有考虑线程设计。

最近,我们增加了通过服务提供商的各种API获取服务提供商实时费率并立即向用户显示的功能。问题在于这些请求是旧的Web服务技术,由于它们的响应时间长,从供应商那里获得所有费率(或放弃)所需要的时间可能长达10秒。

这带来了问题。我们网站上的流量相当不错,客户需要经常查看这些费率。仅用8个进程,就很容易看到如何绑定服务器以等待这些上游请求。尤其是在需要进行其他优化以使网站基准速度更快时(我们正在为此努力)。

我们为请求速率创建了一个单独的库(应该主要是线程安全的,如果不是,应该足够容易地转换为它),我们可以分离出它的配置。因此,我正在考虑使用自己的线程(可能是在Twisted中)创建一个单独的服务,并让浏览器针对JSON与该服务联系,而不是在主Django服务器中运行该服务。

这个解决方案好吗?您能想到更好或更简单的方法吗?我是否应该使用“扭曲”以外的其他东西?如果是,为什么?

雕文

如果要在Django中使用代码,只需使用Crochet即可调用Twisted ,它可以自动管理您选择的任何WSGI实现内反应器的创建,运行和关闭(假定其行为正常)至少像常规的Python流程一样)。

显然,仅在Twisted WSGI容器中运行即可::)。

也许值得看看TReq来发布您的服务客户端请求;您的新“线程安全”库仍将具有为每个阻塞客户端占用整个线程的缺点,这是不小的内存量和额外的并发开销,而使用Twisted则只需要担心几个对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有最简单的方法来异步运行多个python请求?

来自分类Dev

覆盖Django admin内联以为每个实例请求formfield_for_dbfield的最简单方法

来自分类Dev

存储和查询结构简单的数据的最简单,最快的方法是什么?

来自分类Dev

简单的ajax GET请求无法在我的Django页面上运行

来自分类Dev

最简单/最快的方法,如何跨多个JVM节点实现计数器

来自分类Dev

检查字符串是否为bcrypt哈希的最简单,最快的方法是什么?

来自分类Dev

创建1个元素集的最佳/最简单/最快的方法是什么?(C ++)

来自分类Dev

在GIT中在本地上克隆特定存储库分支的最简单/最快方法是什么

来自分类Dev

在Powershell中增加字符串变量中数字的最快/最简单方法是什么?

来自分类Dev

压缩MP3文件的最快,最简单的方法是什么?

来自分类Dev

最简单/最快的方法如何在多个JVM节点之间实现计数器

来自分类Dev

如何在单词中创建多项选择答案纸?(最快,最简单的方法)

来自分类Dev

升级到Rspec 3.x的最快/最简单的方法是什么

来自分类Dev

将两个不同对象的所有列表相交的最快,最简单的方法

来自分类Dev

在命令行中创建新文件的最快/最简单的方法是什么?

来自分类Dev

自动执行https请求的最简单方法

来自分类Dev

解决请求时最简单的方法是解决Github上的冲突

来自分类Dev

处理类中事件的最简单方法

来自分类Dev

将死信发送回处理主题的最简单方法?

来自分类Dev

处理类中事件的最简单方法

来自分类Dev

处理大文件的最快方法?

来自分类Dev

WCF超过50个并发长期运行请求

来自分类Dev

WCF超过50个并发的长期运行请求

来自分类Dev

Apache调优许多长期运行的请求

来自分类Dev

对准备好的 AJAX 请求进行分页的最快和最安全的方法

来自分类Dev

简单地说,运行本身运行docker容器的任务的最简单方法是什么?

来自分类Dev

Nginx上游过早关闭连接,同时从上游读取响应标头,以处理大型请求

来自分类Dev

运行 Python 应用程序的最简单方法,从 Web 应用程序接收数据,处理/操作它,然后将其推回前端

来自分类Dev

Node.js和AngularJS最快最简单的方法来实现身份验证和授权机制

Related 相关文章

  1. 1

    有没有最简单的方法来异步运行多个python请求?

  2. 2

    覆盖Django admin内联以为每个实例请求formfield_for_dbfield的最简单方法

  3. 3

    存储和查询结构简单的数据的最简单,最快的方法是什么?

  4. 4

    简单的ajax GET请求无法在我的Django页面上运行

  5. 5

    最简单/最快的方法,如何跨多个JVM节点实现计数器

  6. 6

    检查字符串是否为bcrypt哈希的最简单,最快的方法是什么?

  7. 7

    创建1个元素集的最佳/最简单/最快的方法是什么?(C ++)

  8. 8

    在GIT中在本地上克隆特定存储库分支的最简单/最快方法是什么

  9. 9

    在Powershell中增加字符串变量中数字的最快/最简单方法是什么?

  10. 10

    压缩MP3文件的最快,最简单的方法是什么?

  11. 11

    最简单/最快的方法如何在多个JVM节点之间实现计数器

  12. 12

    如何在单词中创建多项选择答案纸?(最快,最简单的方法)

  13. 13

    升级到Rspec 3.x的最快/最简单的方法是什么

  14. 14

    将两个不同对象的所有列表相交的最快,最简单的方法

  15. 15

    在命令行中创建新文件的最快/最简单的方法是什么?

  16. 16

    自动执行https请求的最简单方法

  17. 17

    解决请求时最简单的方法是解决Github上的冲突

  18. 18

    处理类中事件的最简单方法

  19. 19

    将死信发送回处理主题的最简单方法?

  20. 20

    处理类中事件的最简单方法

  21. 21

    处理大文件的最快方法?

  22. 22

    WCF超过50个并发长期运行请求

  23. 23

    WCF超过50个并发的长期运行请求

  24. 24

    Apache调优许多长期运行的请求

  25. 25

    对准备好的 AJAX 请求进行分页的最快和最安全的方法

  26. 26

    简单地说,运行本身运行docker容器的任务的最简单方法是什么?

  27. 27

    Nginx上游过早关闭连接,同时从上游读取响应标头,以处理大型请求

  28. 28

    运行 Python 应用程序的最简单方法,从 Web 应用程序接收数据,处理/操作它,然后将其推回前端

  29. 29

    Node.js和AngularJS最快最简单的方法来实现身份验证和授权机制

热门标签

归档