在同一台服务器上运行多个Python程序(Ubuntu Server 12.04)

时间:2012-07-17 17:14:15

标签: python webserver

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

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

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

非常感谢!

3 个答案:

答案 0 :(得分:1)

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

Ubuntu使用upstart

我也喜欢使用supervisord

如果应用程序支持某些Web服务器集成协议(如FCGI或WSGI(python的标准)),您可能希望使用Web服务器进行部署。我已经使用了apache mod_wsgi很长一段时间了,最​​近我倾向于使用nginx + uwsgi。 Apache是​​一个很好的网络服务器,但是nginx + wsgi可以更好地扩展。

[更新]

  

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

首先,您应该遵循有关部署的框架文档的建议(瓶子不是详细about this subject,所以我理解您要问的原因。)

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

为了获得最小的模糊度,您可能需要查看一些PasS提供程序,例如herokuinstructions here。如果您是开发人员而不是系统管理员,这特别有意义。

答案 1 :(得分:0)

因为你在Ubuntu上,使用bash:

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

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

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

at now < ./login.py
at now < ./userData.py

答案 2 :(得分: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/