我正在使用Python创建一个Web服务,我有一个问题。我想分离用户登录用户数据。为此,我创建了两个不同的Python程序。
例如: login.py - > localhost:8080 userData.py - > localhost:8081
我的问题是:如何在同一台服务器上运行这两个程序?是否有易于使用的Python应用程序服务器?
非常感谢!
答案 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提供程序,例如heroku,instructions 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()