问题标签 [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 回答
3258 浏览

python - Tornado 和 pyodbc 的异步调用

我想实现一个基于tornado 的web 服务,它可以为用户提供数据库查询服务。我使用 pyodbc 模块连接到数据库并进行查询。在实践中,我发现打印查询结果需要很长时间。也就是说,如果我用下面的代码打印查询结果

sql命令类似于

在循环结束之前,tornado 不会打印查询结果。而且需要很长时间。

我想利用 tornado 的非阻塞异步特性让其他用户也可以使用 web 服务,即使打印当前用户的查询请求的循环还没有完成。

所以我写了类似的东西:

我读了这篇文章: Asynchronous COMET query with Tornado and Prototype ,我知道我的解决方案行不通。但我当然不能使用 add_timeout,因为我无法弄清楚迭代会持续多长时间。那么我怎样才能通过这个来实现我的目标呢?

0 投票
1 回答
3981 浏览

amazon-s3 - 什么是 RESTful Web 服务最具可扩展性和高性能的 Amazon Web Service (AWS) 配置?

我正在构建一个异步 RESTful Web 服务,并试图找出最具可扩展性和高性能的解决方案是什么。最初,我计划使用 FriendFeed 配置,使用一台运行 nginx 的机器来托管静态内容,充当负载均衡器,并充当运行 Tornado Web 服务器的四台机器的反向代理以获取动态内容。建议在四核机器上运行 nginx,在单核机器上运行每个 Tornado 服务器。Amazon Web Services (AWS) 似乎是最经济、最灵活的托管服务提供商,所以我的问题如下:

1a.) 在 AWS 上,我只能找到 c1.medium(双核 CPU 和 1.7 GB 内存)实例类型。那么这是否意味着我应该在 c1.medium 上运行一个 nginx 实例,在 m1.small(单核 CPU 和 1.7 GB 内存)实例上运行两个 Tornado 服务器?

1b.) 如果我需要扩大规模,我如何将这三个实例链接到同一配置中的另外三个实例?

2a.) 在 S3 存储桶中托管静态内容更有意义。nginx 还会托管这些文件吗?

2b.) 如果没有,性能会因为没有 nginx 托管而受到影响吗?

2c.) 如果 nginx 不托管静态内容,它实际上只是充当负载均衡器。这里有一篇很棒的论文比较了不同云配置的性能,并谈到了负载均衡器:“HaProxy 和 Nginx 在第 7 层转发流量,因此由于 SSL 终止和 SSL 重新协商,它们的可扩展性较差。相比之下,Rock forwards没有 SSL 处理开销的第 4 层流量。” 您是否建议将 nginx 作为负载均衡器替换为在第 4 层上运行的负载均衡器,或者亚马逊的弹性负载均衡器是否足够高性能?

0 投票
4 回答
1831 浏览

python - 用于捕获由字符序列分隔的所有文本的正则表达式

是否可以构造一个正则表达式来捕获所有出现的由字符序列分隔的文本?换句话说,我正在寻找一种等效的标准.split()方法。

我不能使用split(),因为正则表达式用于指定 Tornado Web 应用程序的 URL 路由。例如:

当为构建在 Tornado、Django 或任何其他实现路由模式的 Web 框架之上的 Web 应用程序指定 URL 路由时,这样的正则表达式会派上用场。特别是,将未知长度的 URL 路径解析为参数列表。

到目前为止,我已经设法提出以下正则表达式:

不幸的是,当表达式匹配/posts/show/some-slug/15时,它只返回最后一个匹配组 ( 15),而不是['show', 'some-slug', '15']

我想要实现的是:

  • /posts/edit/15/=>['edit', '15']
  • /posts/edit/15=>['edit', '15']
  • /posts/2010/15/11=>['2010', '15', '11']
0 投票
1 回答
521 浏览

python - 彗星的Python消息缓存?

我可以通过简化版本的示例来最好地描述我正在寻找的内容。Tornado 的演示之一是一个简单的聊天服务器:

https://github.com/facebook/tornado/blob/master/demos/chat/chatdemo.py

我对MessageMixin这里的课很感兴趣。它保留静态长度的消息积压,当有新消息可用时,它返回消息列表的新片段。或者这就是它看起来要做的事情。我知道我之前在编写一个简单的彗星应用程序时已经实现了类似的东西。

那么有没有人对此进行了概括并添加了一些花哨的东西呢?我对管理许多通信渠道和删除一段时间未使用的渠道的方法特别感兴趣。持久性也可能有用。

这是 MQ 可以做到的吗?

0 投票
4 回答
1923 浏览

python - 返回后请求处理程序中的 Tornado 过程数据

在龙卷风请求处理程序中,如果我必须调用不影响返回给用户的函数 foo(),则首先将结果返回给用户然后调用 foo() 是有意义的。是否可以在龙卷风(或使用某些第三方软件包)中轻松做到这一点?

0 投票
3 回答
1170 浏览

python - 在 Tornado 中设置时区

人们如何处理 Tornado 中的时区,以便用户看到相对于他们的时区格式化的时间?我知道 locale.format_date 默认为 GMT,但是如何根据用户设置正确的时区?

0 投票
2 回答
1277 浏览

nginx - 在 Ubuntu 10.04 上使用 Nginx 自动使用域名启动 Tornado

我设法设置了我的 nginx.conf 文件,它看起来像这样:

我对 nginx 文件的问题是:1)我想用域名托管我的应用程序:www.example.com,我应该更改 nginx.conf 文件的哪一行?

我的 nginx.conf 文件与 app.py 位于同一文件夹中。

2) 当我尝试通过键入 /etc/init.d/nginx start 来启动 nginx 时,我收到以下错误消息:

错误信息:

我没有对 /etc/nginx 中的 nginx.conf 文件进行任何配置 我对这部分的问题是: 3) 我该如何修复错误?4)我如何自动启动nginx?

我尝试通过键入 python app.py 来运行我的 Tornado 应用程序,而不是导航到http://xxx.xx.xxx.xxx:8888,并且我的应用程序可以正常运行。

但是,如果我关闭终端(终止进程),我的龙卷风应用程序将不再处于活动状态。

我的问题是:5)我如何自动启动龙卷风应用程序?6) 我如何在域名上运行龙卷风?

谢谢大家的耐心。

此致。

0 投票
2 回答
306 浏览

python - amqp queue_delete 以异步方式捕获错误

我刚刚开始将 pika(v 0.9.4) 与 Tornado 一起使用(通过使用pika.adapters.tornado_connection.TornadoConnection),我想知道在使用时捕获错误的适当方法是什么,例如:queue_delete当您尝试删除的队列没有时不存在。RabbitMQ 引发 AMQPError,但我不确定如何以异步方式处理它。

有人对此有任何见解吗?

0 投票
1 回答
311 浏览

python - 在 Python 中使用事件循环将生成器转换为回调

python中是否有一种简单的方法可以将生成器转换为事件循环的回调,而不使用线程?

我想更改代码

可以与 Tornado 的事件循环一起使用的东西。上面代码的问题是,如果生成器阻塞,它会阻塞当前线程。

0 投票
1 回答
538 浏览

python - 如何使用 python 检测到某些东西已插入 linux 上的音频插孔?

我正在使用带有 tornado.io 的 python tornado 网络服务器。

我想证明我可以通过 tornado.io 异步发送事件。

我怎样才能简单地检测到音频插孔中插入了某些东西并在 tornado.io 中发送消息?