标签: tornado

龙卷风URL查询参数

我一直在玩Tornado,我写了一些看起来不太好的代码.

我正在编写一个应用程序来存储食谱作为示例.这些是我的处理程序:

handlers = [
    (r"/recipes/", RecipeHandler),
    (r"/recipes", RecipeSearchHandler), #so query params can be used to search
]
Run Code Online (Sandbox Code Playgroud)

这导致我写这个:

class RecipeHandler(RequestHandler):      
    def get(self):
        self.render('recipes/index.html')

class RecipeSearchHandler(RequestHandler):    
    def get(self):
        try:
            name = self.get_argument('name', True)
            self.write(name)
        # will do some searching
        except AssertionError:
            self.write("no params")
            # will probably redirect to /recipes/
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来处理这些URL没有尝试/除外?我喜欢/食谱和/食谱/显示相同的东西,而/食谱?名称=某些东西会进行搜索,理想情况下是一个不同的处理程序.

python tornado

36
推荐指数
4
解决办法
6万
查看次数

为什么要一起使用Tornado和Flask?

据我所知,Tornado是一个服务器和一个框架.在我看来,使用Flask和Tornado就像添加另一个抽象层(更多的开销).为什么人们一起使用Flask和Tornado,有什么优势?

python webserver tornado flask web

35
推荐指数
2
解决办法
4万
查看次数

如何停止Tornado Web服务器?

我一直在玩Tornado Web服务器,并且已经到了我想停止Web服务器的地步(例如在单元测试期间).Tornado网页上存在以下简单示例:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)

一旦tornado.ioloop.IOLoop.instance().start()被调用,它就会阻塞程序(或当前线程).读取所述源代码IOLoop对象给出了文档在这个例子中stop功能:

To use asynchronous methods from otherwise-synchronous code (such as
unit tests), you can start and stop the event loop like this:
  ioloop = IOLoop()
  async_method(ioloop=ioloop, callback=ioloop.stop)
  ioloop.start()
ioloop.start() will return after async_method has run its callback,
whether that callback was invoked before or …
Run Code Online (Sandbox Code Playgroud)

python tornado

32
推荐指数
3
解决办法
3万
查看次数

如何从静态路径以外的其他目录提供静态文件?

我在尝试这个:

favicon_path = '/path/to/favicon.ico'

settings = {'debug': True, 
            'static_path': os.path.join(PATH, 'static')}

handlers = [(r'/', WebHandler),
            (r'/favicon.ico', tornado.web.StaticFileHandler, {'path': favicon_path})]

application = tornado.web.Application(handlers, **settings)
application.listen(port)
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)

但是它一直favicon.ico在我的static_path中提供服务(我在两个不同favicon.ico的路径中有两个不同的路径,如上所示,但我希望能够覆盖它中的那个static_path).

python favicon static tornado

32
推荐指数
2
解决办法
5万
查看次数

如何获取Tornado请求的客户端IP?

我有一个RequestHandler传入post()的对象.如何找到发出请求的客户端的IP?我浏览了大部分RequestHandler的方法和属性,似乎错过了一些东西.

python tornado

31
推荐指数
2
解决办法
2万
查看次数

如何在使用Gulp时将React设置为生产模式

我需要在生产模式下运行React,这可能需要在环境中的某个地方定义以下内容:

process.env.NODE_ENV = 'production';
Run Code Online (Sandbox Code Playgroud)

问题是我在Tornado(一个python web-server)后面运行它,而不是Node.js. 我还使用Supervisord来管理龙卷风实例,所以在运行环境中如何设置它并不是很清楚.

但是我使用Gulp将我的jsx文件构建为javascript.

是否有可能以某种方式在Gulp中设置这个?如果是这样,我如何检查React是否在生产模式下运行?

这是我的Gulpfile.js:

'use strict';

var gulp = require('gulp'),
        babelify = require('babelify'),
        browserify = require('browserify'),
        browserSync = require('browser-sync'),
        source = require('vinyl-source-stream'),
        uglify = require('gulp-uglify'),
        buffer = require('vinyl-buffer');

var vendors = [
    'react',
    'react-bootstrap',
    'jquery',
];

gulp.task('vendors', function () {
        var stream = browserify({
                        debug: false,
                        require: vendors
                });

        stream.bundle()
                    .pipe(source('vendors.min.js'))
                    .pipe(buffer())
                    .pipe(uglify())
                    .pipe(gulp.dest('build/js'));

        return stream;
});

gulp.task('app', function () {
        var stream = browserify({
                        entries: ['./app/app.jsx'],
                        transform: [babelify],
                        debug: false,
                        extensions: ['.jsx'],
                        fullPaths: …
Run Code Online (Sandbox Code Playgroud)

javascript python tornado flask reactjs

31
推荐指数
2
解决办法
2万
查看次数

如何在Tornado中返回没有默认模板的HTTP错误代码?

我目前正在使用以下内容来引发HTTP错误请求:

raise tornado.web.HTTPError(400)
Run Code Online (Sandbox Code Playgroud)

返回一个html输出:

<html><title>400: Bad Request</title><body>400: Bad Request</body></html>
Run Code Online (Sandbox Code Playgroud)

是否可以使用自定义正文返回HTTP响应代码?

python tornado

30
推荐指数
4
解决办法
3万
查看次数

27
推荐指数
3
解决办法
2万
查看次数

什么是龙卷风ioloop和龙卷风的工作流程?

我想知道龙卷风的内部工作流程,看过这篇文章,它很棒,但是我无法弄清楚

在ioloop.py中,有这样的功能

def add_handler(self, fd, handler, events):
    """Registers the given handler to receive the given events for fd."""
    self._handlers[fd] = handler
    self._impl.register(fd, events | self.ERROR)
Run Code Online (Sandbox Code Playgroud)

这是什么意思?每个请求都会触发add_handler,或者只是在init时触发一次?

每个socket连接都会生成一个文件描述符,或者它只生成一次?

ioloop和iostream之间的关系是什么?

httpserver如何与ioloop和iostream一起使用?

是否有任何工作流程图,所以我可以清楚地看到它?

对不起这些问题,我只是感到困惑

任何链接,建议,提示有帮助.非常感谢 :)

python tornado

27
推荐指数
1
解决办法
1万
查看次数

龙卷风的非阻塞ORM?

除了Twistar之外还有其他异步Python ORM 吗?

我正在寻找基于龙卷风的非阻塞API的轻量级ORM.当然,我可以使用momoko编写原始SQL查询,但我想使用对象.

python database orm tornado

26
推荐指数
3
解决办法
1万
查看次数

标签 统计

tornado ×10

python ×9

flask ×2

webserver ×2

ajax ×1

comet ×1

database ×1

django ×1

favicon ×1

javascript ×1

orm ×1

reactjs ×1

static ×1

web ×1