Наиболее шустрый python под lighttpd [?]
Как вот на примере просто передать формой (1й скрипт) данные другой странице (2й скрипт)?методом POST?
не понятно, в чем проблема у тебя.
типа есть фронтенд-хттп-сервер, есть питон-бекенд, работающий по протоколу fastcgi.
так?
но ты не можешь настроить, чтобы фронтенд ходил к бекенду по этому протоколу.
так?
или там есть какие-то принципиальные отличия от похапэ, которых я не вижу?
я так понимаю, fastcgi вообще пох на то, какой ты язык используешь, это же interfacing protocol.
Или может быть есть другой более шустрый/безопасный способ.reverse proxy + wsgi не подходит? статика на lighttpd (или нгинх динамика в петоне
в качестве сервера можно взять paste или cherrypy, оба довольно шустрые
если охота поразвлекаться, можно fapws2 посмотреть
Вот обычно как: есть файл, при обращении по определенному адресу этотфайл обрабатывается и ответ отсылается пользователю.
А с тем же фреймворком CherryPy, судя по туториалу, есть класс, он передается серверу, тот привязывает порт (80) к классу и при обращении на 80й порт выдает результат этого класса и только... А как другие классы обработать? А как это в зависимости от адреса сделать?..
А как другие классы обработать? А как это в зависимости от адреса сделать?..Например, так
Простого пути сделать что-то вроде обычного cgi
print "<form action=\"script2.py\"><input type=\"submit\"></form>"
нет?
print "Submitted"
пишешь в начало файла типа #!/usr/bin/python, даёшь права на запуск в системе и в web-сервере и всё.
только это ну никак не быстро.
делаешь wsgi а потом оборачиваешь его в какой тебе надо wsgi-scgi/fastcgi сервер
пустить python через scgi"ты не должен этого хотеть" (ц)
В петоне сейчас принято писать веб-приложения под WSGI
Это довольно просто и очень удобно, но несколько отличается от идеологии принятой в cgi и у пыхпыхов, когда у тя каждый файл делает свое чорное дело и маршрутизация запросов идет в зависимости от их расположения в файловой системе.
Это сложнее в простых случаях, но проще в хоть сколь нибудь более сложных, нежели хомепага
Пример простейшей проги с использованием всги
#!/usr/bin/env python
def app(environ, start):
start("200 Ok", [("Content-Type", "text/plain")])
return ["Yo!"]
from wsgiref.simple_server import make_server
server = make_server("", 8888, app)
server.serve_forever
ЗЫ Совсем забыл, wsgi'шную прогу можно завернуть через произвольный протокол, хоть AJP
В данном примере один единственный скрипт занимает весь порт целиком и полностью (как и в доках к CherryPy). А как мне сделать для случая выше: один скрипт генерит форму, а второй ее обрабатывает?
#!/usr/bin/env python
# -*- encoding: utf8 -*-
def get(environ, start):
start("200 Ok", [("Content-Type", "text/html; charset='utf-8'")])
return ["<form action='.' method='post'><input type='submit' value='Пыщь'/>"]
def post(environ, start):
start("200 Ok", [("Content-Type", "text/plain; charset='utf-8'")])
for k, v in environ.items:
yield "%s: %s\n" % (k, v)
def app(environ, start):
method = environ['REQUEST_METHOD']
if method == 'GET':
return get(environ, start)
elif method == 'POST':
return post(environ, start)
else:
raise RuntimeError("Invalid method: %s" % method)
from wsgiref.simple_server import make_server
server = make_server("", 8888, app)
server.serve_forever
p.s. Действительно таким образом сайты на питоне пишутся?
Для маршрутизации у тебя есть куча вариантов, причём hidden поле - не самый лучший.
Например, кроме метода, можно использовать PATH_INFO, можно хоть HTTP_HOST
Собственно проблема эта решается один раз на весь проект. Обычно каким-нибудь стандартным способом.
В принципе, я как-то хотел для себя сделать отображение найденных питоновских модулей в ФС на PATH_INFO, чтоб было как ты в начале просил
А эти самые обработки все преимущество по скорости на "нет" не сведут?
$ cat rt.py
import time, routes
m = routes.Mapper
m.connect('/merge/{site}/*source/{patchid}')
m.create_regs([])
start = time.time
for i in range(1000):
m.match('/merge/numbers/bob/master/abcd1234')
m.match('/merge/mantis/1234/abcd1234')
print time.time - start
$ python rt.py
0.0617690086365
Тебе жалко 5 * 10^-5 секунд на маршрутизацию запроса?
А какой наиболее правильный способ шустро (т.е. для "под большой нагрузкой") заставить бегать python?смотреть в сторону fastcgi.
а также nginx, нахуй лайти.
Оставить комментарий
feliks28
А какой наиболее правильный способ шустро (т.е. для "под большой нагрузкой") заставить бегать python? (Шустрость, конечно, не в ушерб безопасности)Перерыл кучу всего в инете: говорят, что шустрее всего через scgi+CherryPy. Но в настройке всего этого я запутался. Как вот на примере просто передать формой (1й скрипт) данные другой странице (2й скрипт)?
Или может быть есть другой более шустрый/безопасный способ.