我编辑了这个问题来展示一个小例子。这个演示代码来自龙卷风简介书,并给我这个错误:
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) 我试图在位于单独的.py文件中的get请求中调用一个函数.
@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)
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)"解决方案.
我有一个像下面这样的龙卷风方法,我试图装饰方法来缓存东西。我有以下设置
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应用程序,它使用以下 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。我该怎么做?
我尝试将以下构造函数分别添加到MyClass2和MyClass3,但是当我尝试创建 的实例时MyClass3,出现以下错误:TypeError: __init__() takes exactly 1 argument (3 given)
我的课堂2。初始化():
def __init__(self):
self.m = 3 # This value …Run Code Online (Sandbox Code Playgroud) 使用协程后出现性能问题,代码很简单,如官方文档:
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版本是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 服务器时正确生成分块响应?
在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' 表达式中使用”
不知道为什么~好像没什么问题
执行程序时出现以下错误。
它是一个解析上传文件的程序。
当用户尝试上传文档时出现错误
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) tornado ×8
python ×7
chunked ×1
decorator ×1
functools ×1
httpresponse ×1
inheritance ×1
mongodb ×1
neo4j ×1
python-3.8 ×1
ubuntu ×1