tornado

Описание: Программирование на супер модном мега крутом языке Питон.

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 5 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#1 dyvniy » Вс, 15 октября 2017, 21:53:12

Вроде всё просто и сразу работает
http://www.tornadoweb.org/en/stable/guide/structure.html

Код: Выделить всё

import tornado.ioloop
import tornado
.web

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

def make_app():
    return 
tornado.web.Application([
        (
r"/"MainHandler),
    ])

if 
__name__ == "__main__":
    
app make_app()
    
app.listen(8888)
    
tornado.ioloop.IOLoop.current().start() 
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 5 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#2 dyvniy » Ср, 5 сентября 2018, 14:55:43

Запуск на производстве
http://wiki.python.su/Документации/Tornado-web
конфиг nginx
Спойлер

Код: Выделить всё

user nginx;
worker_processes 1;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
    use epoll;
}

http {
    # Enumerate all the Tornado servers here
    upstream frontends {
        server 127.0.0.1:8000;
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
    }

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log /var/log/nginx/access.log;

    keepalive_timeout 65;
    proxy_read_timeout 200;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1000;
    gzip_proxied any;             
    gzip_types text/plain text/html text/css text/xml
               application/x-javascript application/xml
               application/atom+xml text/javascript;

    # Only retry if there was a communication error, not a timeout
    # on the Tornado server (to avoid propagating "queries of death"
    # to all frontends)
    proxy_next_upstream error;

    server {
        listen 80;

        # Allow file uploads
        client_max_body_size 50M;

        location ^~ /static/ {
            root /var/www;
            if ($query_string) {
                expires max;
            }
        }
        location = /favicon.ico {
            rewrite (.*) /static/favicon.ico;
        }
        location = /robots.txt {
            rewrite (.*) /static/robots.txt;
        }

        location / {
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_redirect false;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_pass http://frontends;
        }
    }
}
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 5 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#3 dyvniy » Ср, 5 сентября 2018, 14:56:40

tornado basic authentification

Код: Выделить всё

import tornado.ioloop
from tornado
.web import RequestHandlerApplication
from tornado_http_auth import DigestAuthMixin
BasicAuthMixinauth_required

import ewsxml

credentials 
= {'user1''pass1'}

'''
# Example 1 (using decorator).
class MainHandler(DigestAuthMixin, RequestHandler):
    @auth_required(realm='
Protected', auth_func=credentials.get)
    def get(self):
        self.write('
Hello %s' % self._current_user)
'''

# Example 2 (using prepare and get_authentciated_user).
class MainHandler(BasicAuthMixinRequestHandler):
    
def prepare(self):
        
self.get_authenticated_user(check_credentials_func=credentials.getrealm='Protected')
        print(
'get /')

    
def get(self):
        
self.write('Hello %s' self._current_user)
        
#send_xml(self)


class ExchangeAsmx(tornado.web.RequestHandler):

    
def get(self):
        
form """<form method="post">
        <input type="
text" name="username"/>
        <input type="
text" name="designation"/>
        <input type="
submit"/>
        </form>"""
        
print('get /ews/Exchange.asmx')
        
self.write(form)
    
def post(self):
        print(
'post /ews/Exchange.asmx')
        
ewsxml.main(self)
        

def main():
    
app Application([
        (
r'/'MainHandler),
        (
r'/ews/Exchange.asmx'ExchangeAsmx),
    ])

    
app.listen(85)
    print(
'start server')
    
tornado.ioloop.IOLoop.current().start()

if 
__name__ == "__main__":
    
main()
 
Изображение


Название раздела: Python
Описание: Программирование на супер модном мега крутом языке Питон.

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения
:) ;) :hihi: :P :hah: :haha: :angel: :( :st: :_( :cool: 8-| :beee: :ham: :rrr: :grr: :* :secret: :stupid: :music: Ещё смайлики…
   

Вернуться в «Python»

Кто сейчас на форуме (по активности за 15 минут)

Сейчас этот раздел просматривают: 1 гость