Лучший способ создать простой веб-сервис на Python

Я использую Python в течение многих лет, но у меня мало опыта в веб-программировании на Python. Я хотел бы создать очень простой веб-сервис, который предоставляет некоторые функции из существующего скрипта Python для использования в моей компании. Скорее всего, он вернет результаты в формате csv. Какой самый быстрый способ что-то поднять? Если это повлияет на ваше предложение, я, вероятно, добавлю к нему дополнительные функции в будущем.

Это хороший быстрый пример: dreamsyssoft.com/blog/blog.php?/archives/…

Rocky Pulley 26.07.2013 22:00
github.com/pramttl/webipy Я написал этот инструмент, который автоматически преобразует ваши функции Python в конечные точки сети. У него есть некоторые ограничения на определения ваших функций, но это, безусловно, самый быстрый способ создания конечных веб-точек для ваших функций Python. Infact webipy использует django, но он автоматически генерирует представления django, необходимые для всех ваших функций python. Вам не нужно писать какой-либо «веб-код».
Pranjal Mittal 25.11.2014 15:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
139
2
193 314
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Жизнь проста, если у вас есть хороший веб-фреймворк. Веб-сервисы в Джанго просты. Определите вашу модель, напишите функции просмотра, которые возвращают ваши CSV-документы. Пропустите шаблоны.

Самый простой способ получить скрипт Python в сети - использовать CGI:

#!/usr/bin/python

print "Content-type: text/html"
print

print "<p>Hello world.</p>"

Поместите этот код в сценарий, который находится в каталоге CGI вашего веб-сервера, сделайте его исполняемым и запустите. Модуль cgi имеет ряд полезных утилит, когда вам нужно принять параметры от пользователя.

При использовании этого метода убедитесь, что обработчик настроен соответствующим образом для сценариев python в Apache, например: AddHandler cgi-script .cgi .pl .py

Tegan Snyder 05.05.2016 16:28

Дело в том, чтобы запустить приложение без какого-либо дополнительного веб-сервера, такого как apache.

AstraSerg 23.08.2016 12:35

web.py, вероятно, самый простой веб-фреймворк. «Голая» CGI проще, но когда дело доходит до создания службы, которая действительно что-то делает, вы полностью предоставлены сами себе.

"Привет мир!" согласно web.py не намного длиннее, чем простая версия CGI, но она добавляет сопоставление URL-адресов, различие HTTP-команд и синтаксический анализ параметров запроса бесплатно:

import web

urls = (
    '/(.*)', 'hello'
)
app = web.application(urls, globals())

class hello:        
    def GET(self, name):
        if not name: 
            name = 'world'
        return 'Hello, ' + name + '!'

if __name__ == "__main__":
    app.run()

Ах да, web.py кажется отличным. На данный момент веб-сайт <webpy.org> сообщает: 500 - Внутренняя ошибка сервера. В противном случае наш код не работает для меня: ... app = web.application (urls, globals ()) AttributeError: объект 'module' не имеет атрибут 'приложение'

bortzmeyer 06.01.2009 12:32

Веб-сайт вернулся. Вы можете проверить свою версию, так как код Тима выглядит правильно.

Charlie Martin 06.01.2009 22:57

Я тоже с этим столкнулся. Если вы используете Ubuntu, версия, поставляемая в репозитории 8.10, уже устарела. Скачайте новейшую версию с веб-сайта или используйте easy_install, и вы должны стать золотыми.

bouvard 06.01.2009 23:55

согласно webpy.org (официальный веб-сайт web.py) яндекс использует web.py (у них 70 миллионов просмотров страниц в день) .. поэтому он должен быть эффективным ..

programmer 15.03.2011 22:47

Это именно то, что мне было нужно. Простой, понятный и простой в использовании.

GuiSim 09.12.2012 22:24

Raw CGI - это своего рода боль, Django - своего рода тяжеловес. Существует ряд более простых и легких фреймворков, например CherryPy. Стоит немного осмотреться.

+1 для CherryPy. Он идеально подходит, когда вам нужно что-то попроще, чем Django.

Steve Losh 07.01.2009 17:16
Ответ принят как подходящий

Взгляните на Werkzeug. Werkzeug начинался как простой набор различных утилит для приложений WSGI и стал одним из самых продвинутых служебных модулей WSGI. Он включает в себя мощный отладчик, полнофункциональные объекты запросов и ответов, утилиты HTTP для обработки тегов сущностей, заголовки управления кешем, даты HTTP, обработку файлов cookie, загрузку файлов, мощную систему маршрутизации URL и множество дополнительных модулей, внесенных сообществом.

Он включает в себя множество интересных инструментов для работы с http и имеет то преимущество, что вы можете использовать его с wsgi в разных средах (cgi, fcgi, apache / mod_wsgi или с простым простым сервером python для отладки).

В итоге я использовал для этого werkzeug. Мне нравится, насколько он гибкий. Спасибо за рекомендацию.

Jeremy Cantrell 03.04.2009 01:11

Я пробовал еще три веб-фреймворка, прежде чем дошел до этого. Это первое, с чем я смог работать "из коробки". Отличный рецепт!

BenDundee 03.04.2015 16:52

If you mean "web service" in SOAP/WSDL sense, you might want to look at Создание WSDL с использованием Python и SOAPpy

Я просто имею в виду «веб-сервис» в самом неформальном смысле. Предоставление данных через http, которые будут использоваться другим приложением. Как я уже сказал в вопросе, скорее всего, это будет csv.

Jeremy Cantrell 06.01.2009 18:24

WSDL, вероятно, будет наиболее основанным на стандартах ... и это будет для использования ...

Thufir 17.01.2017 01:11

возможно скрученный http://twistedmatrix.com/trac/

Я не имею ничего против Twisted, но это именно то, от чего я хотел держаться подальше (тяжелые зависимости).

Jeremy Cantrell 06.01.2009 18:25

@ Джереми: Twisted не тяжелый.

nosklo 06.01.2009 20:49

Я согласен, что на первый взгляд это может показаться немного сложным, но я не уверен, что вы имеете в виду под «тяжелыми зависимостями». Насколько мне известно, он использует пакеты из стандартного питона. Внутри модуля много движущихся частей, но для простых вещей вам не нужно так много делать.

mabbit 08.01.2009 06:48

Посмотрите на Эталонная реализация WSGI. Он уже есть в ваших библиотеках Python. Все очень просто.

Как я уже сказал, мой опыт веб-программирования на Python довольно ограничен, но приложение WSGI можно запускать «автономно», без веб-сервера, такого как apache, верно?

Jeremy Cantrell 06.01.2009 18:30

Да. Полностью автономный. Работает отлично. Однако вы не можете использовать порт 80 без Apache или специальных привилегий - но это проблема безопасности ОС.

S.Lott 06.01.2009 18:50

Если вы имеете в виду «веб-службу», что-то, к чему обращаются другие программы, SimpleXMLRPCServer может быть для вас правильным. Он входит в каждую установку Python, начиная с версии 2.2.

Для простых вещей, доступных человеку, я обычно использую Pythons SimpleHTTPServer, который также поставляется с каждой установкой. Очевидно, вы также можете получить доступ к SimpleHTTPServer с помощью клиентских программ.

Другие вопросы по теме