Сервер Socket io Python в Docker-контейнере для Amazon ECS - Невозможно запустить - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь настроить сервер Socket io Python для Amazon ECS.

Я следовал различным документам, но не могу понять, где я иду не так.

Моя проблема в том, что сервер не работает, поэтому я никогда не получаю сообщение об успешной работе сервера. Я просто получаю пустую строку с мигающим курсором после создания и запуска контейнера Docker.

Когда я загружаю свой образ Docker в Amazon ECS, я не могу подключиться к нему из Socket io Client.

Мой вопрос: куда я иду не так?

Мой Dockerfile:

FROM ubuntu:latest
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
RUN pip install boto3
RUN pip install flask-socketio
RUN pip install "python-engineio"
RUN pip install Flask
RUN pip install eventlet
ENTRYPOINT ["python"]
CMD ["app.py"]

Мой app.py

from __future__ import print_function
from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
sio = SocketIO(app)

import boto3
import json
import decimal
class DecimalEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, decimal.Decimal):
            if abs(o) % 1 > 0:
                return float(o)
        else:
            return int(o)
            return super(DecimalEncoder, self).default(o)

@sio.on('connect')
def connect(sid, environ):
    print('connected ', sid)
@sio.on('disconnect')
def disconnect(sid):
    print('disconnected ', sid)
@sio.on('reconnect')
def reconnect(sid):
    print('reconnected ', sid)

@sio.on('custom_event')
def custom_event(datetm,data_id):
    print('received ', data_id)

    dynamodb = boto3.resource('dynamodb', region_name='us-west-2', 
endpoint_url="https://dynamodb.us-west-2.amazonaws.com")

    table = dynamodb.Table('table')

    pldc_id = "ZZ00000001"
    pldc_datetm = datetm

    response = table.put_item(
        Item={
            "data_id": data_id
        }
    )

    print("PutItem succeeded:")
    print(json.dumps(response, indent=4, cls=DecimalEncoder))
    return data_id

if __name__ == '__main__':
    sio.run(app)
    print('Running and listening on 6030')

Я боролся с этим, и любая помощь очень ценится.

Заранее спасибо.

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