Я пытаюсь настроить сервер 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')
Я боролся с этим, и любая помощь очень ценится.
Заранее спасибо.