シンプルなPython Webサービスを作成する最良の方法[終了]


137

私は何年もpythonを使用していますが、python Webプログラミングの経験はほとんどありません。社内で使用するために既存のpythonスクリプトからいくつかの機能を公開する非常にシンプルなWebサービスを作成したいと思います。結果はcsvで返される可能性があります。何かを始める最も速い方法は何ですか?それがあなたの提案に影響を与えるならば、私はおそらくこれにより多くの機能を将来追加するでしょう。


これは素晴らしいクイックサンプルを示しています:dreamsyssoft.com/blog/blog.php
Triton Man

github.com/pramttl/webipy このツールを作成して、Python関数を自動的にWebエンドポイントに変換しました。関数の定義にはいくつかの制限がありますが、Python関数のWebエンドポイントを生成する最も速い方法です。Infact webipyはdjangoを使用しますが、すべてのpython関数に必要なdjangoビューを自動的に生成します。「ウェブコード」を書く必要はありません。
Pranjal Mittal 2014

回答:


55

見ていWERKZEUGを。Werkzeugは、WSGIアプリケーション用のさまざまなユーティリティの単純なコレクションとして始まり、最も高度なWSGIユーティリティモジュールの1つになりました。これには、強力なデバッガー、フル機能の要求および応答オブジェクト、エンティティタグを処理するHTTPユーティリティ、キャッシュコントロールヘッダー、HTTP日付、Cookie処理、ファイルアップロード、強力なURLルーティングシステム、コミュニティが提供するアドオンモジュールが含まれます。

これには、httpで動作する多くのクールなツールが含まれており、さまざまな環境(cgi、fcgi、apache / mod_wsgi、またはデバッグ用の単純な単純なPythonサーバー)でwsgiを使用できるという利点があります。


2
私はこれにwerkzeugを使用することになりました。私はそれがどれほど柔軟であるかが大好きです。推薦ありがとうございます。
ジェレミー・カントレル

1
これに到達する前に、他の3つのWebフレームワークを試しました。これは、私が箱から出して最初に作業できるものです。素晴らしいレック!
BenDundee 2015

26

web.pyはおそらく最も単純なWebフレームワークです。「ベア」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は素晴らしいようです。現在のところ、Webサイト< webpy.org >は次のように述べています:500-内部サーバーエラーそれ以外の場合、コードは私にとって機能しません:... app = web.application(urls、globals())AttributeError: 'module' object 'application'属性はありません
bortzmeyer 09年

1
ウェブサイトが帰ってきました。Timのコードが正しいように見えるので、バージョンを確認することをお勧めします。
チャーリーマーティン

1
私もこれに遭遇しました。Ubuntuを実行している場合、8.10リポジトリに同梱されているバージョンはかなり古くなっています。ウェブサイトから最新のものを入手するか、easy_installを使用してください。
ブールバード2009年

webpy.orgによると、それは効率的でなければならないので(公式web.pyサイト)Yandexのは..(彼ら70万ページビュー/日を持っている)web.pyを使用している
プログラマ

これはまさに私が必要としたものです。シンプルで、要点はまっすぐで使いやすい。
GuiSim

15

Pythonスクリプトをオンラインにする最も簡単な方法は、CGIを使用することです。

#!/usr/bin/python

print "Content-type: text/html"
print

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

そのコードをWebサーバーのCGIディレクトリにあるスクリプトに入れ、実行可能にして実行します。このcgiモジュールには、ユーザーからパラメータを受け取る必要がある場合に役立つユーティリティがいくつかあります。


このメソッドを実行するときは、ApacheのPythonスクリプトにハンドラーが適切に設定されていることを確認してください。例:AddHandler cgi-script .cgi .pl .py
Tegan Snyder

1
ポイントは、Apacheのような追加のWebサーバーなしでアプリを実行することです。
AstraSerg


9

WSGIリファレンス実装を見てください。Pythonライブラリにすでにあります。とても簡単です。


私が言ったように、Python Webプログラミングの私の経験はかなり制限されていますが、WSGIアプリはApacheのようなWebサーバーなしで「スタンドアロン」で実行できますよね?
Jeremy Cantrell、

はい。完全にスタンドアロン。よく働く。ただし、Apacheや特別な権限なしではポート80を使用できませんが、これはOSのセキュリティ問題です。
S.Lott、2009年

4

「Webサービス」といえば、他のProgramms SimpleXMLRPCServerがアクセスするもの が適切かもしれません。バージョン2.2以降、すべてのPythonインストールに含まれています。

人間が簡単にアクセスできるものの場合、私は通常、すべてのインストールに付属しているPython SimpleHTTPServerを使用します。もちろん、クライアントプログラムからSimpleHTTPServerにアクセスすることもできます。


2

優れたWebフレームワークを入手すれば、人生は単純です。Djangoの Webサービスは簡単です。モデルを定義し、CSVドキュメントを返すビュー関数を記述します。テンプレートをスキップします。


2

SOAP / WSDLの意味で「Webサービス」を意味する場合は、 PythonとSOAPpyを使用したWSDLの生成


最も非公式な意味での「Webサービス」を意味します。他のアプリによって消費されるhttp経由のデータの提供。質問で言ったように、おそらくcsvです。
Jeremy Cantrell、

WSDLはおそらく最も標準に基づいたものになるでしょう...そしてそれは消費されるためです...
Thufir

1

多分ツイステッド http://twistedmatrix.com/trac/


私はTwistedに対して何もしていませんが、これは私が避けたいと思っていたものです(重い依存関係)。
Jeremy Cantrell、

@ジェレミー:ツイストは重くない。
nosklo 2009年

一見すると少し気が遠くなるかもしれませんが、「重い依存関係」の意味がわかりません。私の知る限り、標準のPythonのパッケージを使用しています。モジュールの内部には多くの可動部分がありますが、単純なことをする場合はそれほど多くする必要はありません。
マビット2009年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.