>

두 가지 방법이 있습니다 :

async def broadcast(self, message: WebSocketMessage):
    for web_socket in self._websockets:
        await web_socket.send(json.dumps(message.as_dict()))
async def broadcast_all(self, messages: List[WebSocketMessage]):
    dumped_messages = json.dumps([msg.as_dict() for msg in messages])
    for web_socket in self._websockets:
        await web_socket.send(dumped_messages)

WebSocketMessage 매개 변수로 취할 수있는 방법을 하나만 갖고 싶습니다  또는 List[WebSocketMessage] . 그것이 List 가 아닌 경우  그것을 캐스트하고 broadcast_all 와 같은 일을하는 것보다  했어요.

이러한 전처리를 수행하는 가장 좋은 방법은 무엇입니까?

그게 내가 한 일이다 :

async def broadcast_all(self, messages: object):
    if not isinstance(messages, list):
        messages = list(messages)
    dumped_messages = json.dumps([msg.as_dict() for msg in messages])
    for web_socket in self._websockets:
        await web_socket.send(dumped_messages)

이것이 좋은 방법입니까?

  • 답변 # 1

    당신은 가까이 있지만 [메시지]는 당신이 생각하는 것을하지 않습니다. 이 문장은 메시지에 첫 번째 요소로 저장된 모든 객체를 포함하는 목록을 반환합니다.

    tup = (1,2,3)
    new = [tup]
    # the result of this will be [(1,2,3)]
    
    

    대신, 내장 된 list ()를 사용하여 typecast해야합니다.

    messages = list(messages)
    
    

관련 자료

  • 이전 python - 육각 격자 모양으로 (x, y, z) 좌표를 그리는 방법은 무엇입니까?
  • 다음 자바 스크립트를 사용하여 URL에서 특정 ID를 얻는 방법