Могу ли я разместить приложение python websocket на heroku? - PullRequest
0 голосов
/ 30 апреля 2020

Можно ли разместить приложение python, которое использует websockets на heroku? Я не хочу использовать какие-либо фреймворки, такие как flask или django, просто старые веб-сокеты с библиотекой sockets. Я пытался заставить его работать, но heroku, кажется, зависает и крадет sh всякий раз, когда клиент подключается к нему. Я не думаю, что что-то не так с моим кодом, потому что, когда я размещаю сервер локально на своем компьютере, все работает нормально, как и ожидалось. Он перестает работать, только когда я использую heroku ...

Я посмотрел на этот вопрос и попытался последовать совету, но он просто мгновенно сломал сервер, и когда я попытался соединиться с моим клиент, он просто сказал бы, не может получить адрес. Код ниже - это то, что я сейчас использую, хотя бы частично это работает:

client.py:

import socket

HOST = 'my-heroku-app.herokuapp.com'    # The server's hostname or IP address
PORT = 80                                   # The port used by the server

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    print("Connected")
    s.sendall(b'Hello, world')
    data = s.recv(1024)

print('Received', repr(data))

server.py:

import socket
import os

HOST = '127.0.0.1'               # Standard loopback interface address (localhost)
PORT = int(os.getenv('PORT'))    # Port to listen on (non-privileged ports are > 1023)

print(PORT)

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    conn, addr = s.accept()
    with conn:
        print('Connected by', addr)
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data)

server.py запускается с веб-процессом, поэтому он может получать трафик c.

Когда я запускаю client.py, консоль выводит Connected, но серверный скрипт просто не принимает соединение, и примерно через 5 секунд он просто падает. Я что-то не так делаю, или heroku обрабатывает только http, а не websockets? Любая информация по этому вопросу будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...