处理数据时如何保持websocket的生命?

时间:2019-06-15 12:30:08

标签: python-3.x multithreading websocket

我正在连接一个websocket服务器并从中请求数据,我面临的问题如下:

  1. websocket服务器每10秒钟向我发送一条消息,我必须在收到该消息后立即回复。

  2. 当我处理从服务器接收到的数据时,我需要的时间远远超过10秒,也就是说我需要大约5分钟的时间来处理接收到的每个数据。

  3. 我有一个循环,该循环会执行以下操作:首先从websocket连接接收数据,然后在本地计算机中处理(这需要时间),发送另一个请求并从websocket连接接收新数据,等等。

我想保持websocket连接的活动状态,但是我需要回复服务器的间隔大约是10s,这比我处理数据所需的时间短得多,该怎么办?

以下伪代码解释了上述声明:


# first init plan apply cycle 
# Configure the AWS Provider
# https://www.terraform.io/docs/providers/aws/index.html
provider "aws" {
  version = "~> 2.0"
  region  = "us-east-1"
}

resource "aws_s3_bucket" "terraform_remote_state" {
  bucket = "terraform-remote-state"
  acl    = "private"

  tags = {
    Name        = "terraform-remote-state"
    Environment = "Dev"
  }
}

# add this sniped and execute the 
# the second init plan apply cycle
# https://www.terraform.io/docs/backends/types/s3.html

terraform {
  backend "s3" {
    bucket = "terraform-remote-state"
    key    = "path/to/my/key"
    region = "us-east-1"
  }
}

1 个答案:

答案 0 :(得分:1)

我认为您的伪代码要复杂得多。我将使用JavaScript编写解决此问题的版本(您必须指定端口)。

let storyboard: UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle: Bundle.main)
viewController.present(cryptoTransactionViewController, animated: true, completion: nil)

您需要做的就是创建一个新的线程(运行您的长函数异步)。当longFunction完成后,线程关闭,您回到无限循环(在我的代码段中,ws.onMessage监听服务器消息是无限的)。但是一段时间后,您将拥有与服务器发送的消息一样多的线程,因此,请谨慎创建线程。