标签: polling

轮询与中断

我对中断有一个基本的疑问.想象一下没有任何中断的计算机,所以为了让它进行I/O,CPU必须轮询*键盘以进行按键,鼠标按键定时等.现在,如果它有中断,CPU将继续检查中断线是否定期变高(或低).那么如何通过使用中断来节省CPU周期.根据我的理解而不是现在检查设备,我们正在检查中断线.有人可以解释我错误的基本逻辑.

*这里通过轮询我并不是说CPU处于忙碌状态.引用维基百科"轮询还指的是重复检查设备是否准备就绪的情况,如果不是,则计算机返回到不同的任务"

operating-system interrupt polling

5
推荐指数
1
解决办法
9691
查看次数

为什么不只在写入文件时显示此消息(使用 poll C Linux 函数)?

我正在阅读有关 C 编程中的 poll 并构建了poll(2) 手册页中给出的应用程序。

这是示例:

#include<stdio.h>
#include <stropts.h>
#include <poll.h>
#include <fcntl.h>

int main() {

    struct pollfd fds[2];
    int timeout_msecs = -1;
    int ret;
    int i;

    /* Open STREAMS device. */
    fds[0].fd = open("/home/jeshwanth/mywork/poll/dev0", O_RDONLY);
    fds[1].fd = open("/home/jeshwanth/mywork/poll/dev1", O_RDONLY);
    fds[0].events = POLLOUT | POLLWRBAND;
    fds[1].events = POLLOUT | POLLWRBAND;

    while (1) {
        ret = poll(fds, 2, timeout_msecs);

        if (ret > 0) {
            /* An event on one of the fds has occurred. */
            for (i = …
Run Code Online (Sandbox Code Playgroud)

c linux polling

5
推荐指数
1
解决办法
4万
查看次数

如何在卡桑德拉进行民意调查?

我正试图找到一种方法来对cassandra数据库进行轮询,但我是新手,我不知道如何.

可以说我有一个像这样的"用户"表

-> users
    -> user_name
    -> gender
    -> state
Run Code Online (Sandbox Code Playgroud)

我想不断进行轮询,所以我知道是否有新用户添加到表中.我怎样才能做到这一点?

polling cassandra

5
推荐指数
1
解决办法
581
查看次数

发送SSE给特定客户

我有一个网络应用程序,老师可以在其中创建一个班级,并且能够上传材料并将学生添加到班级中。学生还可以加入特定教师的课程并下载任何上传的材料。

当教师将材料上传到特定班级时,服务器发送事件会发送到每个连接的客户端,并从客户端执行检查以查明此事件是否与客户端有关。这是一个代码示例:

let eventSource = new EventSource(url);
eventSource.onmessage = function(event){
  if(joinedClasses.indexOf(event.data.class) !== -1){
    //notify the user.
  }
  //else just discard the message.
}
Run Code Online (Sandbox Code Playgroud)

我想知道这是否是执行此操作的正确方法,或者我应该使用(长)轮询或其他方法。谢谢。

javascript polling long-polling server-sent-events

5
推荐指数
1
解决办法
4036
查看次数

SQS短期投票是否比长期投票更可取?

Amazon SQS支持两种可用消息轮询模式:短轮询和长轮询.使用长轮询时,使用者指定等待可用消息的超时为1-20秒.

根据文件:

默认情况下,Amazon SQS使用短轮询,仅查询其服务器的子集(基于加权随机分布),以确定是否有任何消息可用于响应.

长轮询提供以下好处:

  • 通过允许Amazon SQS在发送响应之前等待队列中的消息可用来消除空响应.除非连接超时,否则对ReceiveMessage请求的响应至少包含一条可用消息,最多为ReceiveMessage操作中指定的最大消息数.
  • 通过查询所有 - 而不是亚马逊SQS服务器的子集来消除错误的空响应.
  • 一旦可用,就立即返回消息.

上述特征使长期民意调查看起来相当不错.那么有一个使用短轮询更好的用例吗?

特别是对于高吞吐量队列,短轮询比长轮询快吗?

polling amazon-sqs amazon-web-services long-polling

5
推荐指数
1
解决办法
5477
查看次数

Angular 4 轮询数据而不覆盖正在更新的项目

在传感器组件中,我有以下代码每 5 秒轮询一次数据:

  Observable
    .interval(this.sensorsRefreshRate * 1000)
    .startWith(0)
    .switchMap(() => Observable.fromPromise(this.getSensorsPromise(this.hubId)))
    .subscribe(res => {
      this.sensors = res.data;
    })
Run Code Online (Sandbox Code Playgroud)

在组件的模板中,我为传感器阵列中的每个项目生成一个子 Sensor 组件。

         <app-sensor
            [sensor]="sensor" 
            *ngFor="let sensor of sensors; trackBy: trackByFn">
          </app-sensor>
Run Code Online (Sandbox Code Playgroud)

子传感器组件负责更新传感器。

如果在 API 返回轮询数据之前进行更新,则会出现问题。在这种情况下,看起来更改的数据被旧的未更改数据覆盖。下次轮询数据时,将反映用户所做的更改。

简短说明:

  1. 将传感器状态标志更新为“真”
  2. 同时,API从更新那一刻开始返回数据,此时状态标志为“false”,看起来状态已被覆盖
  3. 再次轮询数据后,原始更改显示为应有的样子,因为 API 有新数据

polling angular

5
推荐指数
0
解决办法
151
查看次数

特定存储库的 Jenkins PollScm

我想使用两个 Git 存储库构建一个项目。其中一个包含源代码,而另一个包含构建和部署脚本。

我正在使用 Jenkins 管道来构建我的项目。管道脚本位于Jenkins-pipeline存储库中,源代码位于中间件存储库中。由于我的管道脚本位于 Jenkins-pipeline 存储库中,我正在使用 Jenkins-pipeline 存储库中的 Jenkinsfile 配置我的管道。

这是我正在使用的 Jenkins 文件:

pipeline {
agent any
parameters {
    string(name: 'repo_branch', defaultValue: 'development', description: 'The branch to be checked out')
    string(name: 'git_repo',  defaultValue: 'ssh://git@my-server.com/middleware.git' description: 'Git repository from where we are going to checkout the code')

}
options {

    buildDiscarder(logRotator(numToKeepStr: '5'))
    disableConcurrentBuilds()
    timeout(time: 10, unit: 'MINUTES')
}
triggers {
    pollSCM('* * * * *')
}
stages {
    stage('Checkout git repo') {
        steps {
            git …
Run Code Online (Sandbox Code Playgroud)

git bitbucket polling jenkins jenkins-pipeline

5
推荐指数
1
解决办法
4562
查看次数

如何使用 celery Worker 从 SQS 轮询消息,该消息采用 JSON 格式,并且 Worker 无法解码该格式

如何使用 celery Worker 从 SQS 轮询消息,该消息采用 JSON 格式,并且 Worker 无法解码该格式

注意:这些消息不会使用celerybeat发送到SQS,该队列是从SNS订阅的

我的芹菜工人命令是: 芹菜工人 -A status_handling -l info -Q es_status_test

Msg in Queue:

{
  "Type" : "Notification",
  "MessageId" : "f7e40fd9-8f92-59c5-afd9-5a1847aaae57",
  "TopicArn" : "***",
  "Message" : "{\"SESResponseStatusCode\": 200, \"Status\": \"Delivered\", \"Message\": \"Email sent successfully.\", \"MessageId\": \"a59e85a2-8b7a-4b49-9354-0a7a4170b0c0\", \"Uuid\": null}",
  "Timestamp" : "2019-08-05T06:00:24.943Z",
  "SignatureVersion" : "1",
  "Signature" : "pass",
  "SigningCertURL" : "pass",
  "UnsubscribeURL" : "pass"
}
Run Code Online (Sandbox Code Playgroud)

错误来了:

[2019-08-04 23:00:25,116: CRITICAL/MainProcess] Unrecoverable error: JSONDecodeError('Expecting value: line 1 column 1 (char 0)')
Traceback (most recent call …
Run Code Online (Sandbox Code Playgroud)

django worker polling amazon-sqs celery

5
推荐指数
1
解决办法
1528
查看次数

有没有办法动态地将 SQS 队列分配给 @SqsListener 方法实现,而不必是静态的?

目前,根据我对这些问题(此处此处)的理解,在 AWS Messaging for Spring Boot 中,必须将 @SqsListener 注释定义中的队列名称或队列 url 设置为 Spring 在启动时可以读取的静态字符串。您不能将其设置为变量或队列列表,以便您可以定义一种方法并让该方法作为所有这些 SQS 队列的处理程序。

我的应用程序中有超过 40 个队列。我想做的是取出其中一些队列,将它们放入列表中,并将其提供给 @SqsListener 注释,以便我可以为这 X 个队列使用一种方法,并将一组不同的队列 Y 放入另一个方法的注释。但我似乎做不到这一点。是对的吗?还有其他方法可以做到这一点吗?

我开始不喜欢spring-cloud-aws-messagingmaven 包的实现,在一个方法上使用 @SqsListener 注释,该方法“侦听”特定队列并在新消息出现时调用该方法。尤其重要的是,因为它迫使我使用 AWS Java SQS SDK 1.0,而不是能够使用 2.0。我宁愿在春季自己以某种方式管理民意调查,但我不知道该怎么做。如何在 Spring Boot 中轮询 SQS 队列列表?如果我可以将其配置为长轮询大约 20 秒(根据 AWS 的最大值),并且如果它找到一条消息,它会返回该消息并开始下一次轮询,我希望如此。这可能吗?

java polling amazon-sqs amazon-web-services spring-boot

5
推荐指数
0
解决办法
1829
查看次数

AWS SQS:我们如何使用消息

我想将我的同步 API 之一转换为异步 API。我相信队列是做到这一点的一种方法。就像发布者将消息推送(同步)到队列中一样,该消息将由队列中的消费者 API 消费。

我很想知道消费 AWS SimpleQueueService 消息的正确方法是什么。队列可以调用 API 来将消息传递给它,或者唯一的方法是轮询队列。但我相信轮询会让我们的系统忙于等待,所以最好让队列将消息传递给 API。

有什么可能的方法来做到这一点?

java message-queue polling amazon-sqs amazon-web-services

5
推荐指数
1
解决办法
1万
查看次数