问题标签 [tornado]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1102 浏览

tornado - 如何在 Snow Leopard 上启动并运行 Tornado 服务器

我对osx相当陌生。开箱即用,启动并运行Tornado 服务器的步骤是什么?

0 投票
1 回答
907 浏览

python - 如何将 Disqus 集成到支持 Facebook Connect 的站点(python Tornado 应用程序)

我使用 FacebookMixin 成功地将 Facebook auth 用于基于 Tornado 的网站。我还为我的 Disqus 启用了 Facebook Connect 身份验证,它使用 javascript 小部件放置在页面中。当用户已经使用 FB 登录到我的网站时,当他们想使用 Disqus 发表评论时,他们仍然需要再次登录 FB。

Discus FB Connect 应该如何工作?我以为我在这两者之间获得了无缝的 FB 身份验证(FacebookMixin/Disqus)

0 投票
3 回答
5507 浏览

python - 龙卷风和 Python 3.x

我真的很喜欢Tornado,我想将它与 Python 3 一起使用,尽管它是为 Python 2.5 和 2.6 版本编写的。

不幸的是,该项目的源代码似乎没有附带测试套件。如果我理解正确,它的 WSGI 部分将不会那么容易移植,因为它的规范还没有为Python 3 做好准备(?),但我对 Tornado 的异步特性很感兴趣,所以 WSGI 兼容性不是我主要关心的问题,即使会很好。

基本上我想知道在尝试移植时要查看/注意什么,或者是否已经有端口/分叉(我找不到任何使用 google 或浏览github,尽管我可能错过了一些东西)。

0 投票
3 回答
2439 浏览

asynchronous - Tornado 网络和持久连接

如何在 TornadoWeb 中编写支持持久连接的 Http 服务器。

我的意思是能够在不关闭连接的情况下接收许多请求并回答它们。它实际上是如何异步工作的?

我只想知道如何编写处理程序来处理持久连接。它实际上是如何工作的?

我有这样的处理程序:

完成时执行调用回调。

我的假设是否正确,即 post 将被多次调用,并且对于一个连接计数将随着来自客户端的每个 httprequest 而增加?但是对于每个连接我都会有单独的计数值?

0 投票
2 回答
1338 浏览

jquery - 龙卷风处理程序上的 jquery-Ajax 调用等待先前的 ajax 调用返回

我最近开始为一个家庭项目测试 TornadoWeb,它使用 jquery getJSON 函数来调用我的龙卷风处理程序。发现了一些奇怪的东西,我寻求解释。

我在龙卷风上对Handler1发出 ajax 请求,在某些情况下,对Handler2的请求是在Handler1返回之前启动的。从开发服务器日志和 firebug 控制台调试中可以看出, Handler2请求等待Handler1请求完成,然后返回。所以基本上,XHR 调用正在等待更早的 XHR。它们应该是异步/非阻塞的,对吗?或者我错过了什么。

您可以在http://github.com/harshh/Harsh-Projects/使用 main.py 作为服务器触发文件检查名为testtornado的测试用例环境。

我将感谢任何可以对此有所了解的人的帮助。

0 投票
3 回答
4798 浏览

python - 有人知道python的异步mysql库吗?

我一直在研究 Python 的非阻塞服务器(龙卷风、扭曲等),但如果没有与数据库的非阻塞连接,很多好处似乎都会丢失。有谁知道是否有任何项目可以解决这个问题?(通过非阻塞 la node.js)

编辑:澄清了我的问题

0 投票
3 回答
3936 浏览

python - Tornado Web 框架 Mysql 连接处理

我最近一直在探索 Tornado Web 框架,以便为许多不同的客户端提供许多一致的连接。

我有一个请求处理程序,它基本上采用 RSA 加密字符串并对其进行解密。解密的文本是一个 XML 字符串,由我编写的 SAX 文档处理程序解析。一切正常,执行时间(每个 HTTP 请求)大约为 100 毫秒(包括解密和解析)。

XML 包含用户的用户名和密码哈希。我想连接到 MySQL 服务器以验证用户名是否与应用程序提供的密码哈希匹配。

当我基本上添加以下代码时:

执行 HTTP 请求所需的时间高达 4 - 5 秒!我相信这是在连接到 MySql 数据库服务器本身时发生的。

我的问题是如何加快速度?我可以在全局范围内声明 MySQL 连接并通过创建新游标在请求处理程序中访问它,还是会因为 Tornado 的异步设计而遇到并发问题?

基本上,我怎么能不必每次 Http 请求都与 MySQL 服务器建立新连接,所以它只需要几分之一秒而不是几秒来实现。

另外,请注意,SQL 服务器实际上与 Tornado Web 服务器实例在同一台物理机器上

更新

我只是通过分析器运行了一个简单的 MySQL 查询,下面的代码相同。

单独执行对“connections.py”初始化函数的调用需要 4.944 秒。这似乎不对,是吗?

更新 2

我认为使用一个连接运行(甚至使用非常简单的数据库连接池运行几个连接)将足够快以处理我期望的每个 tornado Web 服务器实例的吞吐量。

如果 1,000 个客户端需要访问一个查询,典型的查询时间是数千秒,最不幸的客户端只需等待一秒钟即可检索数据。

0 投票
5 回答
492 浏览

python - 有没有更好的方法来通过 HTTP 提供昂贵的阻塞 python 进程的结果?

我们有一个 Web 服务,它为较大的 MP3 文件的固定库存中的小片段、任意片段提供服务。MP3 文件由 python 应用程序即时生成。该模型是,向指定您想要的段的 URL 发出 GET 请求,并获得一个audio/mpeg流作为响应。这是一个昂贵的过程。

我们使用 Nginx 作为前端请求处理程序。Nginx 负责缓存常见请求的响应。

我们最初尝试在后端使用 Tornado 来处理来自 Nginx 的请求。如您所料,阻塞的 MP3 操作使 Tornado 无法完成它的工作(异步 I/O)。所以,我们采用了多线程,这解决了阻塞问题,并且表现得很好。然而,它引入了一个微妙的竞争条件(在现实世界的负载下),我们还无法诊断或重现。竞争条件破坏了我们的 MP3 输出。

因此,我们决定将我们的应用程序设置为 Apache/mod_wsgi 后面的简单 WSGI 处理程序(仍然在前面使用 Nginx)。这消除了阻塞问题和竞争条件,但在现实世界条件下在服务器上创建了级联负载(即 Apache 创建了太多进程)。我们现在正在调整 Apache/mod_wsgi,但仍处于试错阶段。(更新:我们已经切换回 Tornado。见下文。)

最后,问题是:我们错过了什么吗?有没有更好的方法通过 HTTP 提供 CPU 昂贵的资源?

更新:感谢 Graham 的文章,我很确定这是一个 Apache 调优问题。与此同时,我们又回到了使用 Tornado 并试图解决数据损坏问题。

对于那些急于解决这个问题的人来说,Tornado 和一些多线程(尽管线程引入了数据完整性问题)可以在小型(单核)Amazon EC2 实例上可接受地处理负载。

0 投票
2 回答
2295 浏览

python - tornado - 将文件传输到 cdn 而不阻塞

我有处理站点上传的 nginx 上传模块,但仍需要将文件(假设每个 3-20mb)传输到我们的 cdn,并且不希望将其委托给后台作业。

在不阻止其他请求的情况下使用龙卷风执行此操作的最佳方法是什么?我可以在异步回调中执行此操作吗?

0 投票
3 回答
474 浏览

python - Web 服务和/或处理 GET 和 POST 的 Python 方法

我已经使用 python 有一段时间了。最近我接触了 Sockets with Twisted,这对学习 Telnet、SSH 和消息传递很有帮助。我想接受一个想法并以网络方式实现它。一周的搜索,我真正能做的就是创建一个资源来处理自己的 GET 和 POST。有人告诉我这是不好的做法。

所以一周后我的问题是:
* Tornado 和标准 Python 套接字等其他选项是更好(或更流行)的方法吗?
* 真的应该在 Twisted GET 和 POST 操作中使用单独的资源吗?
* 在 Python 开发这个领域有什么好的入门资源?

我的语言背景是 C、Java、HTML/DHTML/XHTML/XML,我的主要系统(甚至家庭)是 Linux。