0

Python で Web サービスを作成していますが、質問があります。ユーザーのログインユーザーデータを分離したい。このために、2 つの異なる Python プログラムを作成しています。

例: login.py -> localhost: 8080 userData.py -> localhost: 8081

私の質問は、これら 2 つのプログラムを同じサーバーで実行するにはどうすればよいですか? 使いやすい Python アプリケーション サーバーはありますか?

どうもありがとうございました!

4

3 に答える 3

1

Web サーバーがアプリケーションに組み込まれている場合は、「ウォッチドッグ」アプリケーションを使用して開始/停止/再起動することができます。

Ubuntu はupstartを使用します。

これにもsupervisordを使用するのが好きです。

アプリケーションが FCGI や WSGI (python の標準) などの Web サーバー統合プロトコルをサポートしている場合は、Web サーバーを使用してデプロイすることをお勧めします。ずっとapache mod_wsgiを使っていて、最近はnginx +uwsgiを使う傾向にあります。Apache は優れた Web サーバーですが、nginx+wsgi の方が拡張性に優れています。

[アップデート]

アプリケーションは Bottle + PyMongo (MongoDB) を使用します。スケーラブルにするために何をお勧めしますか?

まず、展開に関するフレームワークのドキュメントのアドバイスに従う必要があります (ボトルはこの件について冗長ではないため、あなたが求めている理由を理解しています)。

B1のコメントは正しいです。データベースとアプリケーションを別々のサーバーに配置することは間違いありません。

最小限のファズで最大限のスケーラビリティを得るには、herokuなどのいくつかの PassS プロバイダーを参照することをお勧めします。これは、システム管理者ではなく開発者である場合に特に意味があります。

于 2012-07-17T17:25:23.937 に答える
0

Tornado は非常に使いやすいアプリケーション サーバーです。異なるリクエスト ハンドラーを使用して、異なるポートでリッスンできます。

スケーラブルで、何千もの接続を処理できます。これを使用して、コンソール サーバーを処理します。シンプルな hello world コードは、知っておくべきことをすべて教えてくれます。単一の ioloop が 2 つの異なるポートでリクエストを処理するように、別の HttpServer を追加しました。

import tornado.ioloop
import tornado.web
from tornado.httpserver import HttpServer

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

class OtherHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Goodbye, world")

application1 = tornado.web.Application([
    (r"/", MainHandler),
])
application2 = tornado.web.Application([
    (r"/", OtherHandler),
])

if __name__ == "__main__":
    HttpServer(application1).listen(8080)
    HttpServer(application1).listen(8081)
    tornado.ioloop.IOLoop.instance().start()

http://www.tornadoweb.org/

于 2012-07-17T18:31:22.990 に答える
0

Ubuntu を使用しているため、bash を使用します。

./login.py &
./userData.py &

これにより、両方のスクリプトがバックグラウンドで実行されます。

シェルを閉じた後もこれらのスクリプトを実行し続けたい場合:

at now < ./login.py
at now < ./userData.py
于 2012-07-17T17:22:26.947 に答える