我正在使用 nginx 监听端口 8080,并使用下面的 nginx.conf 在端口 8081、8081、8083 和 8084 上的四个龙卷风实例上进行平衡。如何强制 nginx 监听另一个端口 8090 并平衡端口 8091、8092、8093 和 8094 ?在 [808*] 上运行的 Tornado 实例与 [809*] 上运行的不同
8080 balance on [8081, 8082, 8083, 8084]
8090 balance on [8091, 8092, 8093, 8094]
Run Code Online (Sandbox Code Playgroud)
有nginx.conf
worker_processes 16;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
#master_process off;
daemon off;
events {
worker_connections 1024;
use epoll;
}
http {
charset utf-8;
# Enumerate all the Tornado servers here
upstream frontends {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
server 127.0.0.1:8084;
}
include …Run Code Online (Sandbox Code Playgroud) 总的来说,我对 Tornado 和 Web 服务还很陌生。在我的应用程序中,我在服务器端有 Qt/c++ 客户端和 python Tornado。Qt 客户端以文本消息的形式发送命令。在服务器端,“on_message”方法接收消息,对其进行解析并调用相关脚本来生成 .png 图像。现在,我想将此图像连同图像的简短描述一起发送回客户端。如何在服务器端和客户端执行此操作?指向任何在线示例的指针也会有所帮助。谢谢。
Tornadoreverse_url不是完全限定的 URL。Tornado 中是否有一种机制可以取回完全合格的 URL?例如:
>>> some_method('foo', 1234)
http://localhost:8080/foo/1234
Run Code Online (Sandbox Code Playgroud) 目前在我的 Tornado 应用程序中,我PeriodicCallback每隔一小时定期调用一次回调。像这样:
import tornado.ioloop
from tornado.ioloop import PeriodicCallback
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(
handlers=urls,
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
debug=True
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
# Here i have option to specify interval, but how to specify when to start?
daily_alerts = PeriodicCallback(lambda: send_email.daily_alert(), 3600000)
daily_alerts.start()
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
在这里,我可以选择设置间隔时间 ( 3600000),但如何指定此定期回调应何时开始?
我期望控制台打印调试语句,例如“服务器在端口上启动...”,但是当我运行python app.py以下文件时,没有打印任何内容。我已经将我的应用程序设置为调试模式。
import logging
from flask import Flask
from flask_env import MetaFlaskEnv
from flask_restful import Resource, Api
from flask_restful import reqparse
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.wsgi import WSGIContainer
class Configuration(metaclass=MetaFlaskEnv):
"""
export PORT=80
"""
DEBUG = True
PORT = 5000
LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)
app = Flask(__name__)
app.config.from_object(Configuration)
api = Api(app)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
LOGGER.debug("server starting on port :" + str(app.config["PORT"]))
HTTP_SERVER = HTTPServer(WSGIContainer(app))
HTTP_SERVER.listen(port=app.config["PORT"])
IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud) 我正在尝试在龙卷风中使用 reverse_url() 并且据我所知使用反向 url 我需要向 urls 列表添加一个名称(就像 Django)但是由于某种原因我在尝试运行服务器:
这是我的网址列表:
urls = [
(r"/", IndexHandler, name="home"),
]
Run Code Online (Sandbox Code Playgroud)
这是我的 html:
<a class="navbar-brand navbar-right" href="{{reverse_url('home')}}">
Run Code Online (Sandbox Code Playgroud)
这是回溯:
Traceback (most recent call last):
File "tornado_server.py", line 4, in <module>
from urls import urls
File "C:\Users\elong\Desktop\reblaze\4. ReactJS\react_tornado\urls.py", line 4
(r"/", IndexHandler, name="home"),
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
任何想法我做错了什么?
想要对一个简单的查询进行排序,但不确定它如何与"gen.task"一起使用,因为它将arg1和param的方法作为arg2.
这不仅仅是很好的:
response, error = yield gen.Task(db.client().collection.find, {"user_id":user_id})
if response:
#blablabla
Run Code Online (Sandbox Code Playgroud)
但那我怎么给它sort()?
更新:现在抛出'回调必须可调用'错误.这似乎是Tornado现在的另一个问题.
def findsort(self, find, callback):
return callback(db.client().collection.find(find).sort({"myfield":1}))
@gen.engine
def anotherfunction(self):
response, error = yield gen.Task(self.findsort, {"user_id":user_id})
Run Code Online (Sandbox Code Playgroud) 我看到很多使用nodejs和webrtc进行点对点视频聊天的例子.我正在使用龙卷风websever搜索一个很好的视频聊天演示.
是否可以使用tornado webserver和webrtc进行视频聊天?
我是html5和webrtc的新手.
如果您找到任何示例/演示,请帮助我
提前致谢
class Form(Form):
def forms(self):
name = TextField('name', validators=[Required()])
class IndexHandler(tornado.web.RequestHandler):
def get(self):
form = Form()
self.render('index.html', form=form.forms())
Run Code Online (Sandbox Code Playgroud)
模板:
<form method="post" action="/test">
{% raw form.name(type='text') %}
</form>
Run Code Online (Sandbox Code Playgroud)
错误:
AttributeError:'NoneType'对象没有属性'name'
但这有效,但是我需要在Form类中使用一个函数:
class Form(Form):
name = TextField('name', validators=[Required()])
class IndexHandler(tornado.web.RequestHandler):
def get(self):
form = Form()
self.render('index.html', form=form)
Run Code Online (Sandbox Code Playgroud) 我有一个Web应用程序,当一个用户使用时运行正常,但随着越来越多的客户端开始使用它,它是无法忍受的缓慢.服务器端是用python编写的,并使用龙卷风.我注意到,虽然它运行的服务器有4个内核,但只有1个正在使用,所以我开始关注python的多处理.我已经看到了以下基本示例:http://sebastianraschka.com/Articles/2014_multiprocessing_intro.html和龙卷风处理器来自:http: //tornado.readthedocs.org/en/latest/_modules/tornado/process.html(这似乎有点复杂),但我仍然不确定这是我正在寻找的.如果有50个用户一次查看它,那么使用4个处理器运行此代码会加快速度吗?如果是这样的选项之一,那么在使用龙卷风Web服务器时可以采用哪种方式?
对于模糊和写得不好的问题感到抱歉 - 即使经过广泛的研究,我对多处理的缺乏经验也应归咎于此.如果任何示例代码有助于回答此问题,请告诉我们.
谢谢!