我在python中创建了一个TCP套接字监听程序。我试图在Heroku上执行。
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 :(得分:1)
您的Procfile应如下所示:
web: python server.py
部署后,运行:
heroku ps:scale web=1
您的应用程序将在端口80外部(在URL:your-app-name.herokuapp.com上)提供,它将自动路由到您的端口:
os.environ.get('PORT')
你正在内心倾听。
技巧是80被路由到内部Web进程类型,但不是路由到工作进程类型。