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

python - Tornado 的多个身份验证选项

刚开始玩 Tornado 并希望提供多种身份验证方法。目前,我的应用使用 tornado.auth.GoogleMixin 与 Google 的混合 OpenID/oAuth 配合良好,未经身份验证的用户会自动发送到 Google 的身份验证页面。

如果未经身份验证的用户想要使用另一个选项(即本地身份验证或 tornado.auth.TwitterMixin),我如何实现逻辑以在登录处理程序中选择身份验证机制?

我将装饰器“tornado.web.authenticated”添加到所有公开的方法中,这是我的登录处理程序类(几乎直接来自 Tornado 示例),目前正在使用 Google OpenID/oAuth:

感谢任何有关解决方案的建议。谢谢

0 投票
3 回答
2531 浏览

python - Python Tornado 中的多个静态目录

我有一个目录结构设置,如:

在 Tornado 中,我想将 js、css 和 libs 作为静态目录提供服务,但我只能找出如何服务其中之一。这可以做到吗?

0 投票
4 回答
3272 浏览

python - 使用 Tornado 为我的 Python 应用程序提供一个 Web 界面来监控它

我有一个 Python 应用程序,它被守护并在服务器 24/7 上运行。我希望能够提供一个非常简单的 Web 界面,以便我可以监控程序中一些变量的变化值。

我正在使用 Tornado,并且可以在Tornado 主页上找到简单的“Hello, world”并开始运行。但是,一旦tornado.ioloop.IOLoop.instance().start()被调用,它就会进入循环并且不会返回。我现有的程序(本质上)也是一个无限循环,但我想将两者结合起来。

所以,我的问题是:如何构建我的程序,以便通过使用 Tornado 提供 Web 界面来监视无限循环中的变量?

0 投票
2 回答
3048 浏览

python - Errno 9 在 Python 中使用带有 Tornado 的多处理模块

对于我的 Tornado 服务器中预期会阻塞的操作(并且不能轻易修改以使用 Tornado 的异步 HTTP 请求客户端之类的东西),我一直在使用该multiprocessing模块将工作卸载到单独的工作进程。具体来说,我使用的是多处理Pool,因为它提供了一个名为 的方法apply_async,该方法与 Tornado 配合得非常好,因为它将回调作为其参数之一。

我最近意识到一个池预先分配了进程的数量,所以如果它们都变成阻塞的,需要一个新进程的操作将不得不等待。我确实意识到服务器仍然可以apply_async通过将东西添加到任务队列来进行连接,并且它本身会立即完成,但我希望为我需要执行的n个阻塞任务生成n 个进程。

我想我可以add_handler为我的 Tornado 服务器的 IOLoop 使用该方法来为我创建的每个新 PID 添加一个处理程序到该 IOLoop。我以前做过类似的事情,但它使用了 popen 和任意命令。使用这种方法的一个例子是here。不过,我想将参数传递给我范围内的任意目标 Python 函数,所以我想坚持使用multiprocessing.

但是,似乎有些东西不喜欢我的multiprocessing.Process对象所具有的 PID。我明白了IOError: [Errno 9] Bad file descriptor。这些过程是否受到某种限制?我知道 PID 在我实际启动进程之前不可用,但我确实启动了进程。这是我制作的演示此问题的示例的源代码:

这是回溯:

上面的代码实际上是从一个使用进程池的旧示例修改而来的。我已经保存了很长一段时间以供我的同事和我自己参考(因此评论量很大)。我以这样的方式构建它,以便我可以并排打开两个小的浏览器窗口,向我的老板展示 /sync URI 阻止连接,而 /async 允许更多连接。就这个问题而言,重现它所需要做的就是尝试访问 /async 处理程序。它立即出错。

我该怎么办?PID怎么可能是“坏的”?如果您运行该程序,您可以看到它被打印到标准输出。

作为记录,我在 Ubuntu 10.04 上使用 Python 2.6.5。龙卷风是 1.1。

0 投票
2 回答
1824 浏览

websocket - WebSocket 交叉连接通信(Tornado?)

我对 WebSockets 有点摸索,很高兴让 Tornado 服务器运行并执行基本的 websocket 连接是多么容易。今天之前我从未使用过 Tornado,虽然我喜欢我所看到的,但我对它的使用有一些疑问。

首先,我使用 WebSockets 以便我可以在两台或多台客户端机器之间进行低开销的通信。(为了对话,我们只说它是一个聊天客户端)显然我可以从多台机器连接到服务器,它们都可以将消息推送到服务器并且服务器可以响应,这很棒!但这并不比您的标准 AJAX 请求好多少。如果我有一个持久连接,我也希望能够将数据推送到客户端。最简单的情况是用户 1 向服务器发布消息,服务器收到消息后立即将其推送给用户 2。

那么什么是实现这一目标的好方法呢?据我在 Tornado 中看到的,除了将消息放在某个数据存储中并让所有其他连接轮询新信息之外,没有其他方法可以在连接之间进行通信。不过,这让我觉得非常笨拙,因为此时您真正要做的就是将轮询过程从客户端移动到服务器。

当然,我可能完全在这里吠错了树。Tornado 根本不是这项工作的正确工具当然是合理的,如果是这样的话,我很乐意听到有关替代方案的建议!

0 投票
1 回答
740 浏览

python - 我使用龙卷风框架。我可以在龙卷风模板中使用字典和列表类型,但是当我在模板中使用对象时,它会呈现为内存地址

详情。我导入 Solrpy 包来使用。至于 Django 项目上介绍 pagenator 的文档。我将 pagenator.page (Solrpage) 对象传递给龙卷风模板,但它不起作用。我可以使用 Solrpage 的任何方法。相反,它被呈现为内存地址。

下面是分页器的使用方式,我也是这样使用的

从 django.core.paginator 导入分页器,InvalidPage,EmptyPage

def listing(request): contact_list = Contacts.objects.all() paginator = Paginator(contact_list, 25) # 每页显示 25 个联系人

{% for contact in contacts.object_list %} {# 每个“联系人”都是一个联系人模型对象。#} {{ contact.full_name|upper }}
... {% endfor %}

{% if contacts.has_previous %} 前 {% endif %} 第 {{ contacts.number }} 页,共 {{ contacts.paginator.num_pages }}。……
0 投票
2 回答
1615 浏览

python - 有没有办法像 django makemessage 一样生成龙卷风本地化 CSV 文件?

Django makemessage 可以生成 i18n 文件,并且更容易翻译。

如我所见,tornado 支持 CSV 格式和 gettext 格式,但我只能使用 CSV 版本,因为我将在 appengine 使用它。

因此,我正在寻找一种基于扫描我的代码和模板为龙卷风生成这些 CSV 文件的方法。

0 投票
2 回答
29279 浏览

python - 何时以及如何使用 Tornado?什么时候没用?

好的,Tornado 是非阻塞的,而且速度非常快,它可以轻松处理很多常规请求。

但我想这不是灵丹妙药,如果我们只是盲目地运行基于 Django 的网站或使用 Tornado 的任何其他网站,它不会带来任何性能提升。

我找不到对此的全面解释,所以我在这里问:

  • 什么时候应该使用 Tornado?
  • 什么时候没用?
  • 使用时,应该注意什么?
  • 我们如何使用 Tornado制作低效的网站?
  • 有一个服务器和一个网络框架。我们什么时候应该使用框架,什么时候可以用其他框架替换它?
0 投票
6 回答
3260 浏览

python - Python Tornado 的 Defacto 项目模板

有人可以推荐python龙卷风的项目骨架吗?我想推出自己的产品很容易,但我很好奇那里还有什么,因为(显然)其他人之前已经走上了这条路。

0 投票
2 回答
301 浏览

django - 我在由龙卷风服务器驱动的 django 上看不到 utf-8 字符串

我在 tornado 服务器上运行了一个 django 服务器。

当我使用 ó 或 ñ 之类的特殊字符时,某个 django 模板的某些部分不会呈现(字符集已在 settings.py 和 tornado_script.py 中指定为 'utf-8' # - - 编码:utf-8 - -)。

考虑到模板的某个部分没有很好地呈现(表单)并且服务器使用 django 内置的 runserver 可以完美地工作,我可以假设问题来自 tornado 服务器,但我无法调试该配置。

如果你们中的一些人知道如何调试它以找到丢失的配置,请告诉我。

过去 3 个小时我一直在搜索,但没有任何结果。

此致