2017-04-13 14 views
0

私はPythonでTCPソケットリスニングプログラムを作成しました。私は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:私はHerokuのは、14150ポートが外部にマッピングされませんので、内部のメッシュ内部ポートマッピングを使用して知っている

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 

14150ポート。どうすれば私のサーバーにリクエストを送ることができますか?どの港?

私はポート80および443で要求を送信しようとしたが、それらは14150.

答えて

0

にマップされていないようにあなたのProcfileは次のようになりそうです:あなたがデプロイした後、

web: python server.py 

実行します。

heroku ps:scale web=1 

アプリ(URLで:your-app-name.herokuapp.com)外部ポート80で利用できるようになり、自動的にポートにあなたのためにルーティングされます。

os.environ.get('PORT') 

あなたは内部的に聴いています。

トリックは80で、内部のWebプロセスタイプにルーティングされますが、ワーカープロセスタイプにはルーティングされません。

関連する問題