간단한 파이썬 웹 서비스를 만드는 가장 좋은 방법


137

몇 년 동안 파이썬을 사용해 왔지만 파이썬 웹 프로그래밍에 대한 경험이 거의 없습니다. 회사 내에서 사용하기 위해 기존 파이썬 스크립트의 일부 기능을 제공하는 매우 간단한 웹 서비스를 만들고 싶습니다. 결과를 csv로 반환합니다. 무언가를 얻는 가장 빠른 방법은 무엇입니까? 그것이 귀하의 제안에 영향을 미치면 더 많은 기능을 추가 할 것입니다.


이것은 좋은 빠른 샘플을 보여줍니다 : dreamsyssoft.com/blog/blog.php?/archives/…
Triton Man

github.com/pramttl/webipy 필자는 파이썬 기능을 웹 엔드 포인트로 자동 변환하는이 도구를 작성했습니다. 함수 정의에는 약간의 제한이 있지만 파이썬 함수에 대한 웹 엔드 포인트를 생성하는 가장 빠른 방법입니다. 사실 webipy는 django를 사용하지만 모든 파이썬 함수에 필요한 django 뷰를 자동으로 생성합니다. "웹 코드"를 작성할 필요가 없습니다.
Pranjal Mittal

답변:


55

werkzeug보십시오 . Werkzeug는 WSGI 응용 프로그램을위한 다양한 유틸리티의 간단한 모음으로 시작하여 가장 진보 된 WSGI 유틸리티 모듈 중 하나가되었습니다. 강력한 디버거, 완전한 기능을 갖춘 요청 및 응답 객체, 엔터티 태그를 처리하는 HTTP 유틸리티, 캐시 제어 헤더, HTTP 날짜, 쿠키 처리, 파일 업로드, 강력한 URL 라우팅 시스템 및 수많은 커뮤니티 제공 애드온 모듈이 포함되어 있습니다.

여기에는 http와 함께 작동하는 멋진 도구가 많이 포함되어 있으며 다른 환경 (cgi, fcgi, apache / mod_wsgi 또는 디버깅을 위해 일반 간단한 파이썬 서버)에서 wsgi와 함께 사용할 수 있다는 이점이 있습니다.


2
나는 이것을 위해 werkzeug를 사용했다. 나는 그것이 얼마나 유연한 지 사랑합니다. 추천 해 주셔서 감사합니다.
Jeremy Cantrell

1
나는 이것에 도달하기 전에 세 가지 다른 웹 프레임 워크를 시도했다. 이것은 내가 처음부터 얻을 수있는 첫 번째 것입니다. 좋은 rec!
BenDundee

26

web.py 는 아마도 가장 간단한 웹 프레임 워크 일 것입니다. "Bare"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'object '응용 프로그램'속성이 없습니다
bortzmeyer

1
웹 사이트가 돌아 왔습니다. Tim의 코드가 올바르게 보이는 것처럼 버전을 확인하고 싶을 수도 있습니다.
찰리 마틴

1
나도 이것에 부딪쳤다. Ubuntu를 실행중인 경우 8.10 리포지토리에 제공되는 버전이 최신 버전이 아닙니다. 웹 사이트에서 최신 정보를 얻거나 easy_install을 사용하면 황금색이어야합니다.
bouvard

webpy.org (공식 web.py 웹 사이트)에 따르면 yandex는 web.py (일일 7 천만 페이지 뷰)를 사용하고 있습니다.
프로그래머

이것이 바로 내가 필요한 것입니다. 간단하고 사용하기 쉬운 지점.
GuiSim

15

Python 스크립트를 온라인으로 만드는 가장 간단한 방법은 CGI를 사용하는 것입니다.

#!/usr/bin/python

print "Content-type: text/html"
print

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

해당 코드를 웹 서버 CGI 디렉토리에있는 스크립트에 넣고 실행 가능하게 한 다음 실행하십시오. 이 cgi모듈에는 사용자의 매개 변수를 승인해야 할 때 유용한 유틸리티가 많이 있습니다.


이 방법을 수행 할 때 처리기가 Apache의 Python 스크립트에 적합하게 설정되어 있는지 확인하십시오. 예 : AddHandler cgi-script .cgi .pl .py
Tegan Snyder

1
요점은 아파치와 같은 추가 웹 서버없이 앱을 실행하는 것입니다.
AstraSerg

12

원시 CGI는 고통스럽고 장고는 무겁습니다. CherryPy 와 같은 몇 가지 더 간단하고 가벼운 프레임 워크가 있습니다. 조금 둘러 볼 가치가 있습니다.


2
CherryPy의 경우 +1 장고보다 단순한 것을 원할 때 적합합니다.
Steve Losh

9

상기 봐 WSGI 참조 구현 . 이미 파이썬 라이브러리에 있습니다. 아주 간단합니다.


내가 말했듯이, 파이썬 웹 프로그래밍 경험은 꽤 제한적이지만 아파치와 같은 웹 서버없이 WSGI 앱을 "독립형"으로 실행할 수 있습니까?
Jeremy Cantrell

예. 완전히 독립형입니다. 잘 작동합니다. 그러나 Apache 또는 특수 권한이 ​​없으면 포트 80을 사용할 수 없지만 이는 OS 보안 문제입니다.
S.Lott

4

"웹 서비스"를 의미하는 경우 다른 프로그램에서 액세스 한 것이 SimpleXMLRPCServer 일 수 있습니다. 버전 2.2 이후의 모든 Python 설치에 포함되어 있습니다.

사람이 접근 할 수있는 간단한 것들을 위해 보통 모든 설치와 함께 제공되는 Pythons SimpleHTTPServer 를 사용합니다. 클라이언트 프로그램으로 SimpleHTTPServer에 액세스 할 수도 있습니다.


2

좋은 웹 프레임 워크를 얻는다면 인생은 간단합니다. 장고의 웹 서비스 는 쉽습니다. 모델을 정의하고 CSV 문서를 반환하는보기 기능을 작성하십시오. 템플릿을 건너 뜁니다.


2

SOAP / WSDL 의미에서 "웹 서비스"를 의미하는 경우 Python 및 SOAPpy를 사용하여 WSDL 생성


가장 비공식적 인 의미에서 "웹 서비스"를 의미합니다. http를 통해 다른 앱에서 사용할 데이터를 제공합니다. 내가 질문에서 말했듯이 csv 일 것입니다.
Jeremy Cantrell

WSDL은 아마도 가장 표준에 기반한 것이며 아마도 소비 될 것입니다 ...
Thufir

1

어쩌면 트위스트 http://twistedmatrix.com/trac/


나는 Twisted에 반대하는 것이 없지만 이것은 내가 멀리하고 싶었던 것입니다 (무거운 의존성).
Jeremy Cantrell

@Jeremy : 트위스트는 무겁지 않습니다.
nosklo

언뜻보기에는 약간 어려울 수 있지만 동의는 '무거운 의존성'의 의미가 무엇인지 잘 모르겠습니다. 내가 아는 한 표준 파이썬 패키지를 사용합니다. 모듈 내부에는 움직이는 부분이 많지만 간단한 작업에는 그렇게 할 필요가 없습니다.
mabbit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.