标签: tornado

龙卷风中的断言错误

我编辑了这个问题来展示一个小例子。这个演示代码来自龙卷风简介书,并给我这个错误:

Traceback (most recent call last):
  File "demo.py", line 25, in <module>
    ui_modules={'Hello', HelloModule}
  File "/usr/local/lib/python2.7/dist-packages/tornado-3.1.1-py2.7.egg/tornado/web.py", line 1422, in __init__
    self._load_ui_modules(settings.get("ui_modules", {}))
  File "/usr/local/lib/python2.7/dist-packages/tornado-3.1.1-py2.7.egg/tornado/web.py", line 1545, in _load_ui_modules
    assert isinstance(modules, dict)
AssertionError
Run Code Online (Sandbox Code Playgroud)

演示文件

import tornado.web
import tornado.httpserver
import tornado.ioloop
import tornado.options 
import os.path
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)


class HelloHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('hello.html')


class HelloModule(tornado.web.UIModule):
    def render(self):
        return '<h1>Hello, world!</h1>'

if __name__ == '__main__':
    tornado.options.parse_command_line()

    app = tornado.web.Application(
        handlers=[(r'/', HelloHandler)],
        template_path=os.path.join(os.path.dirname(__file__), 'templates'), …
Run Code Online (Sandbox Code Playgroud)

python tornado

0
推荐指数
1
解决办法
1169
查看次数

具有外部功能的协同程序

我试图在位于单独的.py文件中的get请求中调用一个函数.

main.py

@gen.coroutine
def get(self):
    logging.info('starting TEST4: ' + str(datetime.now()))
    result = yield gen.Task(common.t2())
    print result
    logging.info('finished TEST4: ' + str(datetime.now()))
    self.write('complete!') 
Run Code Online (Sandbox Code Playgroud)

common.py(外部.py)

def t2():
    """ This is a non-blocking function """
    for x in range(10000000):
        for y in range(10):
            a = 1
    a = "Slow non-blocking function"
    return a   
Run Code Online (Sandbox Code Playgroud)

我试图让函数t2运行异步并打印它返回的变量"a"的值.我也在Python 2.7中运行此代码,这也可能是一个问题.我究竟做错了什么?

注意:我也不想使用"concurrent.futures.ThreadPoolExecutor(8)"解决方案.

python tornado

0
推荐指数
1
解决办法
67
查看次数

Python 装饰器 - &lt;Classname&gt; 对象没有属性 '__name__'

我有一个像下面这样的龙卷风方法,我试图装饰方法来缓存东西。我有以下设置

def request_cacher(x):
    def wrapper(funca):
        @functools.wraps(funca)
        @asynchronous
        @coroutine
        def wrapped_f(self, *args, **kwargs):
            pass

        return wrapped_f
    return wrapper

class PhotoListHandler(BaseHandler):
    @request_cacher
    @auth_required
    @asynchronous
    @coroutine
    def get(self):
        pass
Run Code Online (Sandbox Code Playgroud)

我收到错误,有AttributeError: 'PhotoListHandler' object has no attribute '__name__' 什么想法吗?

python tornado decorator functools python-decorators

0
推荐指数
1
解决办法
2092
查看次数

如何在 Python 中进行此类继承?

我有一个 Python/ Tornado应用程序,它使用以下 3 个类响应 HTTP 请求:

import tornado.web
class MyClass1(tornado.web.RequestHandler):
    x = 1
    y = 2

    def my_method1(self):
        print "Hello World"


class MyClass2(MyClass1):

    @tornado.web.authenticated
    def get(self):
        #Do Something 1
        pass

    @tornado.web.authenticated
    def post(self):
        #Do Something 2
        pass


class MyClass3(MyClass2):
    pass
Run Code Online (Sandbox Code Playgroud)

我希望所有实例MyClass2的实例变量都m设置为整数 3。但是任何实例都MyClass3应该覆盖它并m设置为整数 4。我该怎么做?

我尝试将以下构造函数分别添加到MyClass2MyClass3,但是当我尝试创建 的实例时MyClass3,出现以下错误:TypeError: __init__() takes exactly 1 argument (3 given)

我的课堂2。初始化():

def __init__(self):
    self.m = 3 # This value …
Run Code Online (Sandbox Code Playgroud)

python inheritance tornado

0
推荐指数
1
解决办法
507
查看次数

协程的 Tornado 性能问题

使用协程后出现性能问题,代码很简单,如官方文档:

class MainHandler(tornado.web.RequestHandler):
    @tornado.gen.coroutine
    def get(self):
        httpClient = tornado.httpclient.AsyncHTTPClient()
        yield httpClient.fetch('http://google.com/', method = 'GET')
Run Code Online (Sandbox Code Playgroud)

测试命令为:

wrk -t12 -c400 -d30s http://10.0.0.10:2002/
Run Code Online (Sandbox Code Playgroud)

我每秒只能收到 66 个请求,如果我删除httpClient.fetch(),我每秒可以收到 1659 个请求。Tornado 在 E5-2666 v3 @ 2.90GHz 上运行单个进程,该进程的 CPU 使用率全部为 100%。

我正在使用 Tornado v4.4.1,python 2.7。

python tornado

0
推荐指数
1
解决办法
356
查看次数

如何让 Python 龙卷风生成分块响应

我的python版本是3.4,我的tornado版本是4.3。我的代码是这样的:

import tornado.ioloop
import tornado.web
import tornado.httputil
import tornado.httpserver


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        body = 'foobar'*10
        self.set_header('Transfer-Encoding', 'chunked')
        self.write(body)
        self.flush()
        self.finish()


app = tornado.web.Application([
        (r'/chunked', MainHandler),
])

if __name__ == "__main__":
    app.listen(8080)
    tornado.ioloop.IOLoop.current().start()
Run Code Online (Sandbox Code Playgroud)

这根本行不通,客户端只是等待块结束。如何在使用 Tornado 服务器时正确生成分块响应?

python tornado httpresponse chunked

0
推荐指数
1
解决办法
1412
查看次数

对象 MotorLatentCommandCursor 不能在“await”表达式中使用

在Tornado中使用motor连接mongodb

我创建了一个电机连接

import motor.motor_tornado
from tornado.web import RequestHandler
client = motor.motor_tornado.MotorClient('mongodb://xxx')

class BaseHandler(RequestHandler):
    @property
    def db(self):
        return client['realtime-test']

class Account(BaseHandler):
    async def get(self,*args,**kwargs):
        all_user = await self.db.account.aggregate([
            {'$match': {'status': 1}},
            {'$group': {'_id':''}}
        ])
        print(all_user)
Run Code Online (Sandbox Code Playgroud)

当我开始时,我收到此消息:“对象 MotorLatentCommandCursor 不能在 'await' 表达式中使用”

不知道为什么~好像没什么问题

python tornado mongodb tornado-motor

0
推荐指数
1
解决办法
4387
查看次数

错误:模块“平台”没有属性“linux_distribution”

执行程序时出现以下错误。
它是一个解析上传文件的程序。
当用户尝试上传文档时出现错误

Error: module 'platform' has no attribute 'linux_distribution'
Path: tmp/resume_2020-08-28_10-09-05/Document.pdf
Traceback (most recent call last):
  File "/home/adiagarwal/Python-3.8.0/resume_parser_env/lib/python3.8/site-packages/wand/api.py", line 143, in <module>
    libraries = load_library()
  File "/home/adiagarwal/Python-3.8.0/resume_parser_env/lib/python3.8/site-packages/wand/api.py", line 132, in load_library
    raise IOError('cannot find library; tried paths: ' + repr(tried_paths))
OSError: cannot find library; tried paths: []

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/adiagarwal/projects/BackEnd/admin_api.py", line 198, in post
    im = page.to_image()
  File "/home/adiagarwal/Python-3.8.0/resume_parser_env/lib/python3.8/site-packages/pdfplumber/page.py", line 255, in to_image
    from .display import …
Run Code Online (Sandbox Code Playgroud)

ubuntu tornado neo4j windows-subsystem-for-linux python-3.8

0
推荐指数
1
解决办法
4691
查看次数