@Jagorm

Как подключиться к python программе на Heroku?

Доброго времени суток!
Имеется 2 программы (клиент и сервер). Сервер я размещаю на хостинге Heroku и запускаю.
Код сервера:
import socket  # Импорт
import asyncio

print(socket.gethostbyname_ex(socket.gethostname()))
ip = socket.gethostbyname(socket.gethostname())
port = 9091

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server.bind((ip, 9091))
server.listen(1)
conn, addr = server.accept()
print(f'Connected: {addr}')
print(f'Server has started on {ip}:{port}')
running = True

while running:
    # Блок принятия данных
    data = conn.recv(1024)
    if data.decode("utf-8") == 'stop' or not data:
        running = False
    conn.send(data.decode("utf-8").upper().encode("utf-8"))

conn.close()
server.close()
print('Server has finished')


Код клиента:
import socket  # Импорт
import asyncio

server_ip = input('Введите ip адрес сервера >>> ')

print('Client has started')
client = socket.socket()
client.connect((server_ip, 9091))
client.send('Connection!'.encode('utf-8'))
running = True


while running:
    # Блок принятия данных
    data = client.recv(1024)
    if data == 'stop':
        running = False
    print(f'Message from server>>> {data.decode("utf-8")}')

    # Блок отправки данных
    message = input('Message to server>>> ')
    if message == 'stop' or not message:
        client.send('stop'.encode('utf-8'))
        running = False
    client.send(message.encode('utf-8'))

client.close()
print('Client has finished')


При попытке подключения к программе на Heroku с домашнего компьютера с помощью клиента выскакивает следующее исключение:
TimeoutError: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера


Что касательно содержания файлов для деплоя на Heroku, то requirements пуст, т.к. ничего из сторонних библиотек не используется, а вот содержание Procfile:
worker: python server.py

Заранее благодарю
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Во-первых, Heroku - не хостинг. Во-вторых, worker'ы предназначены для выполнения фоновых задач, поэтому платформа им порты не публикует.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы