2017-04-13 55 views
0

我在python中創建了一個TCP套接字監聽程序。我正試圖在Heroku上執行。heroku上的TCP/IP套接字

Procfile: worker: python server.py jobs:work

Server.py:

def start_server(): 

    server_config = config['Server'] 

    # configurations 
    HOST = server_config['HOST'] 
    PORT = int(environ.get('PORT')) #server_config.getint('PORT') 
    BUFFER_SIZE = server_config.getint('BUFFER_SIZE') 

    # server socket setup 
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
    server_socket.bind((HOST, PORT)) 
    server_socket.listen(server_config.getint('LIMIT')) 

    logging.info('server started %s:%d', HOST, PORT) 

CLI:

F:\dev\>heroku run python server.py 
Running python server.py on syswow64server... up, run.3213 (Free) 
INFO:root:server started 0.0.0.0:14150 

我知道heroku上使用內部端口映射齧合,以便內部14150端口不映射到外部14150端口。那麼我怎麼能發送請求到我的服務器?哪個端口?

我試圖發送端口80和443的請求,但好像他們沒有被映射到14150.

回答

0

你Procfile應該是這樣的:

web: python server.py 

部署後,運行:

heroku ps:scale web=1 

您的應用程序將可以在80端口外(在URL:your-app-name.herokuapp.com)將被自動發送給你的端口:

os.environ.get('PORT') 

您正在內部偵聽。

訣竅是80被路由到內部Web進程類型,但不是工作進程類型。