如何在两个端口或线程中运行Flask

时间:2012-12-14 14:34:16

标签: python flask

我想运行一个Flask实例,它侦听两个不同的端口,我的意思是,一些操作在8080端口,另一些在8090.有没有办法做到这一点? O可能在线程中运行两个Flask app实例?

添加上下文:基本上,我需要模拟生产环境,其中核心功能在端口8080上,但由于某些安全限制,我需要为某些特定客户端使用代理进行某些操作(8090)

我的意思是8080例如

  • /库/ {ID}

几乎所有客户端都会使用此操作,但某些特定客户端需要使用代理。 以8090为例

  • / reposproxy方法= “GET” &安培;资源= “储存库” &安培;查询= “ID =” XXXX“
基本上,打电话给8080。

此外,我尝试为app.run()分叉或创建一个线程,但我无法成功运行。

1 个答案:

答案 0 :(得分:2)

我使用多处理python功能使用Fork(进程)方法解决了问题。我定义为应用Flask,然后运行进程

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()