问题标签 [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 投票
4 回答
3525 浏览

python - Python 全局变量是线程安全的吗?

编辑:我询问全局变量在像龙卷风这样的单线程网络框架中是否安全

我正在使用 mongoengine orm,它从全局变量获取数据库连接:

我也在使用 tornado,一个单线程的 python web 框架。在一个特定的视图中,我需要获取一个数据库连接并取消引用一个DBRef对象[类似于外键]:

由于返回的连接_get_db是全局变量,是否有可能发生冲突并将错误的值返回到错误的线程?

0 投票
2 回答
788 浏览

python - 使用 Tornado Web 框架编写聊天应用程序时使用什么互斥锁/锁定/等待机制

我们正在使用 Tornado 实现一个聊天服务器。

前提很简单,用户打开到 Tornado 服务器的 HTTP ajax 连接,并且 Tornado 服务器只有在聊天室中出现新消息时才会响应。每当连接关闭时,无论是否有新消息进入或发生错误/超时,客户端都会重新打开连接。

看看 Tornado,问题就出现了,我们可以使用什么库来让这些调用等待某个会向它们发出信号的中心对象 - A_NEW_MESSAGE_HAS_ARRIVED_ITS_TIME_TO_SEND_BACK_SOME_DATA.

为了用 Win32 术语来描述这一点,每个异步调用都将表示为一个线程,该线程将挂在WaitForSingleObject(...)某个中央 Mutex/Event/etc 上。

我们将在标准的 Python 环境(Tornado)中运行,有没有内置的东西可以使用,我们是否需要外部库/服务器,有什么 Tornado 推荐的吗?

谢谢

0 投票
4 回答
6386 浏览

python - Tornado 和 Prototype 的异步 COMET 查询

我正在尝试使用 Tornado 和 JS Prototype 库编写简单的 Web 应用程序。因此,客户端可以在服务器上执行长时间运行的作业。我希望这项工作异步运行 - 以便其他客户可以查看页面并在那里做一些事情。

这是我所拥有的:

这是服务器部分。它有主视图(显示很少的问候语、当前服务器时间和 ajax 查询的 url,执行长时间运行的作业。如果您按下按钮,则会执行长时间运行的作业。服务器挂起 :( 我无法查看任何页面,而此作业正在运行。这是模板页面:

我究竟做错了什么?如何使用 Tornado 和 Prototype(或 jQuery)实现长池化

PS:我看过Chat example,但它太复杂了。无法理解它是如何工作的:(

PSS 下载完整示例

0 投票
5 回答
2226 浏览

c# - 是否有任何基于 C# 的开源非阻塞、基于事件的 Web 服务器,例如 Tornado?

我想构建一个基于彗星的应用程序,并希望它能够维持多达 1000 个并发连接。据我了解,Tornado 的优点是每个请求不会产生一个线程,因此可以轻松处理数千个长轮询请求。

0 投票
1 回答
571 浏览

safari - Tornado 流:flush() 在 Safari 和 Chrome 上滞后(Firefox 很好)

在 Safari 和 Chrome 上,直到一定次数的刷新后,我才能在我的页面上看到 flush() 更新实时更新,或者有时它在 Safari 上完全挂起。不过,刷新更新可以立即在 Firefox 上运行。

我想知道几件事:

1) 为什么 Safari 和 Chrome 在刷新更新开始时会滞后,然后在我垃圾邮件刷新后突然正常工作?

2) 与使用 finish() 然后重新轮询相比,flush() 是否具有显着的服务器性能提升?多少?

0 投票
1 回答
2147 浏览

asynchronous - Tornado 可以以非阻塞异步方式与 Cassandra 通信吗?

我正在开发一个 Web 项目,该项目必须处理如此多的客户请求。所以我正在考虑使用 Cassandra 和龙卷风。Tornado 似乎有一个内置客户端(tornado.httpclient.AsyncHTTPClient),它可以做 http 非阻塞请求。但是,Cassandra 使用 Thrift 协议。使用 Thrift,Tornado 似乎在向 Cassandra 查询时被阻止。

有没有人有经验?请建议我该怎么做。或者,是否有任何用于此目的的附加模块?

谢谢。

0 投票
5 回答
3287 浏览

chat - 聊天应用程序:pubsubhubbub vs xmpp

我不确定构建聊天应用程序的最佳堆栈。目前我正在考虑两个主要选择:

  • 脸书龙卷风
    • 缺点:不使用主聊天协议 xmpp 而是 pubsubhubbub
    • 优点:我真的很喜欢它的简单开发(webserver + webframework);pubsubhubbub 作为协议似乎也比 xmpp 更简单;我知道蟒蛇
  • xmpp + 博世、旁遮普语、ejabberd
    • 缺点:不懂 erlang;总体似乎有点难以开发
    • 优点:使用 xmpp 协议

聊天应用程序需要具备以下条件:

  • 私人信息
  • 公共房间
  • 私人房间
  • 房间的聊天记录(不是永远,只是最近的 n 条消息)
  • html嵌入
  • 聊天室的网址

这两个选项似乎都是可扩展的,所以我并不担心(我们也在考虑在亚马逊的 ec2 中运行该应用程序)。我知道有一个项目使用 tornado 构建 xmpp 服务器,但它还没有准备好用于生产,而且我们的截止日期也没有那么大。基本上,我主要担心的是开发的难易程度与后来使用 pubsubhubbub 开发聊天应用程序的遗憾,但我在某处读到 PubSubHubbub 最终可能会取代 XMPP,因为 REST 取代了 SOAP - 那么你怎么看?

0 投票
5 回答
7860 浏览

google-app-engine - Google App Engine - 安全 Cookie

我一直在寻找一种在 Google App Engine 中进行基于 cookie 的身份验证/会话的方法,因为我不喜欢基于 memcache 的会话的想法,而且我也不喜欢强迫用户创建 google 帐户只是为了使用网站。我偶然发现有人发帖提到了 Tornado 框架中的一些签名 cookie 函数,它看起来像我需要的。我想到的是将用户的 id 存储在防篡改 cookie 中,并且可能使用请求处理程序的装饰器来测试用户的身份验证状态,并且作为附带好处,用户 id 将可用于请求处理程序数据存储工作等。这个概念类似于 ASP.NET 中的表单身份验证。这段代码来自 Tornado 框架的 web.py 模块。

根据文档字符串,它“对 cookie 进行签名和时间戳记,因此它不能被伪造”和“如果验证,则返回给定的签名 cookie,或者无。”

我尝试在 App Engine 项目中使用它,但我不理解尝试让这些方法在请求处理程序的上下文中工作的细微差别。有人可以告诉我正确的方法来做到这一点,而不会失去 FriendFeed 开发人员投入其中的功能吗?set_secure_cookie 和 get_secure_cookie 部分是最重要的,但如果能够使用其他方法也很好。

uid=1234|1234567890|d32b9e9c67274fa062e2599fd659cc14

部分:
1. uid 是密钥的名称
2. 1234 是您的明文值
3. 1234567890 是时间戳
4. d32b9e9c67274fa062e2599fd659cc14 是由值和时间戳组成的签名

0 投票
1 回答
1454 浏览

comet - 与 Twisted 和 Tornado 的区别?

我需要使用 Comet 网络服务器创建一个简单的浏览器聊天。

所以我找到了 Twisted 和 Tornado。

有什么区别 ?

0 投票
4 回答
19663 浏览

ajax - 如何将 Django 与 Tornado 网络服务器一起使用?

如何将 Django 与 Tornado Web 服务器一起使用?