2017-04-13 57 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进程类型,但不是工作进程类型。