nềnFlask: Một API RESTful và SocketIO server
tôi đang cố gắng để tạo ra một REST API đơn giản bằng cách sử dụng phần mở rộng Flask-RESTful. API này sẽ hoạt động chủ yếu để quản lý CRUD và xác thực người dùng cho một dịch vụ đơn giản.
Tôi cũng đang cố gắng tạo một vài ổ cắm web bằng cách sử dụng phần mở rộng Flask-SocketIO mà những người dùng này có thể kết nối và xem các cập nhật theo thời gian thực cho một số dữ liệu liên quan đến những người khác sử dụng dịch vụ. Vì vậy, tôi cần biết rằng những người dùng này được xác thực và được ủy quyền để kết nối với một số ổ cắm nhất định.
Vấn đề
Tuy nhiên, tôi đang gặp một chút rắc rối việc thiết lập. Có vẻ như tôi không thể có hai thành phần này (REST API và máy chủ SocketIO) làm việc cùng nhau trên cùng một cá thể Flask. Lý do tôi nói điều này là bởi vì khi tôi chạy sau, hoặc REST API hoặc máy chủ SocketIO sẽ làm việc, nhưng không phải cả hai:
from flask import Flask
from flask_restful import Api
from flask.ext.socketio import SocketIO
app = Flask(__name__)
api = Api(app)
socketio = SocketIO(app)
# some test resources for the API and
# a test emitter statement for the SocketIO server
# are added here
if __name__ == '__main__':
app.run(port=5000)
socketio.run(app, port=5005)
Câu hỏi
Là giải pháp điển hình cho loại thiết lập để có hai trường hợp riêng biệt của Flask đi cùng một lúc? Ví dụ, máy chủ SocketIO của tôi có yêu cầu API REST của tôi để kiểm tra xem một người dùng cụ thể có được xác thực/ủy quyền để kết nối với một ổ cắm cụ thể không?
Điều gì xảy ra nếu bạn * chỉ * sử dụng 'socketio.run (ứng dụng, cổng = 5005)' và cố gắng nhấn REST API trên cổng 5005? –
@SeanVieira Vì lý do nào đó, nó hoạt động tốt ... Tôi cho rằng tôi sẽ giữ API và ổ cắm trên cùng một cổng rồi – nmagerko