0

我正在用 Python 创建一个网络服务,我有一个问题。我想分离用户登录用户数据。为此,我正在创建两个不同的 Python 程序。

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

我的问题是:如何在同一台服务器上运行这两个程序?有没有好用的 Python 应用服务器?

非常感谢你!

4

3 回答 3

1

如果网络服务器嵌入在应用程序中,您可能希望使用一些“看门狗”应用程序来启动/停止/重新启动。

Ubuntu 使用新贵

我也喜欢为此使用supervisord

如果应用程序支持一些网络服务器集成协议,如 FCGI 或 WSGI(python 的标准),您可能希望使用网络服务器部署它。apache mod_wsgi用了很久,最近更倾向于使用nginx +uwsgi。Apache 是一个很好的网络服务器,但 nginx+wsgi 的扩展性更好。

[更新]

应用程序使用 Bottle + PyMongo (MongoDB) 你建议什么是可扩展的?

首先,您应该遵循框架文档中有关部署的建议(bottle对此主题并不冗长,所以我理解您为什么要问)。

B1评论是对的。您肯定希望将数据库和应用程序放在不同的服务器上。

为了以最小的模糊性获得最大的可扩展性,您可能需要查看一些 PassS 提供程序,例如heroku此处的说明。如果您是开发人员而不是系统管理员,这特别有意义。

于 2012-07-17T17:25:23.937 回答
0

由于您在 Ubuntu 上,因此使用 bash:

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

这将在后台运行这两个脚本。

如果您希望这些脚本在您关闭 shell 后继续运行:

at now < ./login.py
at now < ./userData.py
于 2012-07-17T17:22:26.947 回答
0

Tornado 是一个非常易于使用的应用服务器。您可以使用不同的请求处理程序侦听不同的端口。

它是可扩展的,可以处理数千个连接。我们用它来处理我们的控制台服务器。简单的 hello world 代码真的告诉你所有你需要知道的。我添加了另一个 HttpServer 以便单个 ioloop 处理两个不同端口上的请求:

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 回答