我正在Python中創建一個web服務,我有一個問題。我想分開用戶登錄用戶數據。爲此,我創建了兩個不同的Python程序。在同一臺服務器上運行多個Python程序(Ubuntu Server 12.04)
例如: login.py - >本地主機:8080 userData.py - >本地主機:8081
我的問題是:我怎麼能運行在同一臺服務器上的這兩個節目?有沒有一個易於使用的Python應用程序服務器?
非常感謝!
我正在Python中創建一個web服務,我有一個問題。我想分開用戶登錄用戶數據。爲此,我創建了兩個不同的Python程序。在同一臺服務器上運行多個Python程序(Ubuntu Server 12.04)
例如: login.py - >本地主機:8080 userData.py - >本地主機:8081
我的問題是:我怎麼能運行在同一臺服務器上的這兩個節目?有沒有一個易於使用的Python應用程序服務器?
非常感謝!
如果Web服務器嵌入在應用程序中,你可能需要使用一些「看門狗」應用啓動/停止/重新開始。
Ubuntu使用upstart。
我也喜歡使用supervisord。
如果應用程序支持某些Web服務器集成協議(如FCGI或WSGI(Python標準)),則可能需要使用Web服務器進行部署。我已經使用apache mod_wsgi很長一段時間,最近我傾向於使用nginx + uwsgi。 Apache是一個很好的網絡服務器,但nginx + wsgi擴展性更好。
[更新]
應用程序使用瓶+ PyMongo(MongoDB的),你有什麼建議具有可擴展性?
首先,你應該按照關於部署的框架文檔(瓶子不是詳細的about this subject,所以我明白你爲什麼問)的建議。
B1評論是正確的。您一定希望將數據庫和應用程序放在不同的服務器上。
爲了獲得最大的可擴展性和最小的模糊,您可能需要查看一些PasS提供商,如heroku,instructions here。如果您是開發人員而不是系統管理員,這很有意義。
既然你是在Ubuntu上,使用bash:
./login.py &
./userData.py &
這將在後臺運行這兩個腳本。
如果想將這些腳本來繼續運行你閉上你的後殼:
at now < ./login.py
at now < ./userData.py
對於此技巧,需要使用'chmod u + x login.py userData.py'。但是這並沒有幫助處理這個需求的代碼請求python代碼 – nk9 2012-07-17 17:51:17
Tornado是一個非常易於使用的應用服務器。您可以使用不同的請求處理程序在不同的端口上偵聽。
它是可擴展的,可以處理數千個連接。我們用它來處理我們的控制檯服務器。簡單的hello世界代碼真的告訴你所有你需要知道的。我添加了另一個的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()
,我不明白你的問題。這兩個應用程序似乎都運行在不同的端口(8080和8081)。那麼,究竟是什麼問題? – 2012-07-17 17:18:56
hm ...你的例子不起作用。你需要一臺服務器。處理Web請求和處理/重新加載/記錄Python腳本的服務器。不要忘了virtulenv。或者您必須在腳本中手動執行此項工作 – nk9 2012-07-17 17:47:30