python - Heroku 上的 TCP/IP 套接字

标签 python sockets heroku

我用python创建了一个TCP套接字监听程序。我正在尝试在 Heroku 上执行它。

过程文件: 工作人员:python server.py jobs:work

服务器.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)

命令行界面:

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。

最佳答案

您的 Procfile 应该如下所示:

web: python server.py

部署后,运行:

heroku ps:scale web=1

您的应用程序将在外部端口 80 上可用(网址为:your-app-name.herokuapp.com),该应用程序将自动为您路由到该端口:

os.environ.get('PORT')

你正在内部聆听。

诀窍是 80 被路由到内部 Web 进程类型,但不会路由到工作进程类型。

关于python - Heroku 上的 TCP/IP 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43386624/

相关文章:

java - For 循环不循环字符串列表?

ruby-on-rails - Heroku 推送被拒绝,检测到 Ruby 版本已更改,找不到 net-scp-1.0.6

heroku - 在 Heroku 上运行 Scipy

python - 预测和拟合之间的keras形状不匹配

为数据框中的每个点获取最近点的 Pythonic 方法(最近邻)

java - 迷人且引人入胜的 Java 套接字多线程 fandango

ruby-on-rails - 首次设置 Heroku 数据库

python - 如何从 python 中的嵌套字典中获取特定键及其值?

python - 使用 join 匹配多个正则表达式

java - BufferedReader readLine 和 OutputStreamWriter .write