2012-12-14 28 views
2

我想運行一個Flask實例,它偵聽兩個不同的端口,我的意思是,一些操作在端口8080和其他端口在8090.有什麼辦法可以做到這一點嗎? O可能在線程中運行兩個Flask應用程序實例?如何在兩個端口或線程中運行Flask

添加內容:基本上,我需要模擬一個生產ENVS,其核心功能是在端口8080,但由於一些安全限制,我需要使用代理服務器對某些操作(8090)對一些特定客戶

我的意思是在8080例如

  • /庫/(編號)

這種操作幾乎所有的客戶,然而,一些特定的客戶端需要使用代理消耗。 在8090例如

  • /reposproxy?方法= 「獲得」 &資源= 「庫」 &查詢= 「ID =」 XXXX」

,基本上,撥打8080

此外,我嘗試fork或爲app.run()創建線程,但我無法成功運行。

+0

你能解釋一些關於你想要完成的事情嗎?你爲什麼做這個?什麼操作應該發生在8080反對8090? – dm03514

+0

只需運行兩個單獨的實例即可完成此操作。分開這兩個服務,以便如果一個導致未處理的錯誤,它不會波及並關閉這兩個服務。 – sean

+0

我試過在2線程上運行沒有成功 – Agus

回答

1

我使用多處理python功能的fork(進程)方法解決了這個問題。 pp燒瓶,然後運行到加工

def info(title): 
    print(title) 
    print('module name:', __name__) 
    if hasattr(os, 'getppid'): # only available on Unix 
     print('parent process:', os.getppid()) 
    print('process id:', os.getpid()) 


def startServer(inDebug, port): 
    print "Starting Main Mock Server" 
    app.run(debug=inDebug, port=port) 


def startProxyServer(inDebug, port): 
    print "Starting JSONP Mock Server Proxy" 
    appJsonp.run(debug=inDebug, port=jsonpPort) 


if __name__ == '__main__': 
    info('Main Line Starting') 
    p = mp.Process(target=startServer, args=(False, port)) 
    p.deamon = True 
    p.start() 
    p1 = mp.Process(target=startProxyServer, args=(False, port)) 
    p1.deamon = True 
    p1.start() 
    p.join() 
    p1.join() 
+2

顯然你沒有測試過這個。 – Dave

相關問題