标签: polling

轮询数据库的替代方案?

我有一个如下工作的应用程序:Linux机器为客户生成28种不同类型的信件.这些字母必须以.docx(Microsoft Word格式)发送.秘书维护MS Word模板,必要时自动使用.不能使用MS Word进行更改.

为了协调所有这些,文档作业被放入数据库表中,并且在每台Windows机器上运行的python程序经常轮询数据库,锁定作业并根据需要运行它们.

我们使用中央数据库表来获取作业信息,以协调不同的状态("新","处理","完成","打印")......以及提供准确的状态信息.

无论如何,我不喜欢客户经常轮询数据库,因为他们大部分时间都没有工作.客户每5秒钟一次.

为了避免轮询,我有点想要广播"有一些工作要做"或"检查你的数据库是否有一些工作要做"的消息发送到所有客户端机器.

我认为某种发布/订阅消息队列可以胜任这项工作,但我不希望任何大规模的额外复杂性.

是否有零或接近零的配置/维护软件才能实现这一目标?有什么选择?

X

polling

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

从J2ME客户端轮询HTTP服务器

我在我的手机(客户端)上运行了一个J2ME应用程序,

我想打开与服务器的HTTP连接,并继续轮询服务器上的更新信息.

由于GPRS计费基于发送和接收的数据包,因此每次轮询都会耗尽GPRS字节,从长远来看会变得昂贵.是否有一种使用HTTP协议进行轮询的字节有效方法?

我也听说过长时间的民意调查,但我不确定它是如何运作的,效率如何.

实际上,优先选择的方式是服务器告诉手机应用程序新数据已准备好使用,这样就不需要进行轮询,但是我不知道这些技术,特别是在J2ME中.

java mobile http polling java-me

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

Jquery Ajax调用崩溃的Internet Explorer?

我必须承认,这是我在这个网站上的第一篇文章,所以如果我做错了(格式化等),我会在建议中道歉.

无论如何,我正在使用javascript(和jQuery)创建一种mmo,到目前为止,Chrome,Safari,Firefox等都运行良好.但是,我发现在某个地方,Internet Explorer崩溃了.

通过重现崩溃,我把它缩小到这个代码:

function getUpdates(){
var data={uid:playerName,area:1,mid:lastMessage};
$.ajax({ 
    url: "getUpdates.py", 
    timeout: 32000,
    data: data,
    type:"GET",
    complete: function(obj, textStatus){
            //handleUpdates(obj);
        getUpdates();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

应该在很长一段时间内轮询更新.但是,在一次回复之后的IE中,这段代码陷入无限循环,这会使浏览器崩溃.只有在没有服务器响应时,每次回复后似乎都不会崩溃.

注意,表示"完成:......"的行已被尝试为:

success: function(...){getUpdates();...},
error: function(...){getUpdates();...}
Run Code Online (Sandbox Code Playgroud)

出现同样的问题.

crash jquery internet-explorer polling long-polling

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

长期民意调查与常规民意调查的利弊是什么?

我有一个网页,我需要检查服务器每秒更新一次.更新可能相对频繁或不常见.可能有很多Web客户端同时检查服务器是否有更新.这可以是每秒一次的AJAX请求,也可以是模拟服务器推送的"长轮询".我想用哪种方法?为什么?似乎每秒启动HTTP连接的开销可能会使长轮询方法更受欢迎.另一方面,服务器可以维护的并发连接数可能存在限制.对这些技术进行一些比较对我来说有用,可以决定走哪条路.

ajax push polling long-integer

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

AJAX轮询 - 检查新数据库条目

我每隔一秒轮询一次我的数据库,只有在新的条目提交到数据库之后我才需要它做一些事情; 它不能只是重新拉动一切.有帮助吗?

php mysql ajax jquery polling

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

在Java中拖尾/轮询日志文件的最有效方法

有许多方法,可以使用创建程序并只调用Unix tail命令,但问题是该进程必须安装在安装了尾部的Unix机器上.

另一个选择是直接读取文件,直到没有更多行,睡眠一段时间然后尝试读取下一行并重复.

问题是我如何/如何轮询正在被写入的文件.AFAIK在Java中没有办法在文件被修改时获得异步通知,因为这个级别太低(来自操作系统的东西).我也知道没有lib支持这个.

我在想一个更好的方法可能是在文件的修改日期进行睡眠/轮询..?

有解决方案吗

java performance file-io file polling

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

如何监视文件描述符以获取新数据的可用性?

请考虑以下代码段.

#include <fcntl.h>
#include <stdio.h>
#include <sys/poll.h>
#include <unistd.h>

int main(int argc, char ** argv) {
    int fd;
    char buf[1024];
    int i;
    struct pollfd pfds;
    fd = open(argv[1], O_RDONLY);

    while (1) {
        pfds.fd = fd;
        pfds.events = POLLIN;

        poll(&pfds, 1, -1);

        if (pfds.revents & POLLIN) {
            i = read(fd, buf, 1024);

            write(1, buf, i);
        }
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序接收文件名,打开相应的文件,并"轮询"其文件描述符,以便监视可用性中的数据.每当poll检测到可用性数据时,都会打印这些新数据.

但是,这个程序会发生什么?如果我要监视的文件在程序启动时已包含数据,则打印其内容.没关系.但是,稍后,当我使用文本编辑器编辑文件并保存它时,我的程序不会打印新数据.

那么,如何监视常规文件描述符(不是使用其路径的文件)以获得新的数据可用性?我是否必须使用其他功能poll?或者我错过了任何pollfd旗帜?

linux file-descriptor polling

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

GitHub API:如何改善对活动事件的非常有效的轮询?

GitHub的API提供了活动事件的特征users,orgsrepos.API支持分页最多10页,总共300 页,每页events30 events页.使用ETAG标头实现速率限制.我正在尝试轮询此API以获取最新活动.然而,由于Github所提供的设计,该方案非常低效.可以说,我就请求page-1通过

https://api.github.com/users/me/events/orgs/my-org?page=1
Run Code Online (Sandbox Code Playgroud)

我将获得ETAG此页面的条目.现在我移动到下一个page-2并做

https://api.github.com/users/me/events/orgs/my-org?page=2
Run Code Online (Sandbox Code Playgroud)

并将获得ETAG第2页.同样,我可以从所有10个支持的页面中提取事件.

现在让我们说我的orgs Github帐户上执行了一些活动.让我们假设只发生了一个新事件.在这种情况下,当我使用它poll的API 将返回已更改的页面,其中包含新的.同样在其前面也将发送改变页.然而,这种变化是之前最后一次事件并且现在已经移至顶部的事件.所有页面都会发生这种"转移到下一个".没有办法找出发生的新事件的数量.唯一的解决方案是继续轮询以获取最新信息.然而,这种方法有一个严重的缺陷解释如下:page-1ETAGeventpollingpage-2ETAGpage-2page-1page-2page-1events

events我的poll轮次之间的新数量大于30(一页上的最大项目)时,情况会变得更糟.在这种情况下,最新的30个事件之前的事件将page-2直接滑到.如果我只是pollpage-1我身上会失去这些滑倒的事件page-2.我想到的唯一解决方案是保留整个事件的缓存,然后扫描所有页面.然而,这是一种非常有效且不可取的方式,并且杀死事件通知API的目的.

我希望有些github-dev可以回答这个问题

api github polling github-api

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

Selenium webdriver轮询时间

我期待有关Selenium中硒webdriver轮询时间的正确解释.

据我所知,下面的wait命令会等待40秒,直到特定元素被点击为止

  public void CreateSalesOrder(){
        WebDriverWait wait = new WebDriverWait(driver, 40);
        wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser));
            btnNewSalesOrser.click(); 
    }
Run Code Online (Sandbox Code Playgroud)

在第二个代码片段中,我添加了"轮询"命令.

   public void CreateSalesOrder(){
        WebDriverWait wait = new WebDriverWait(driver, 40);
        wait.pollingEvery(2, TimeUnit.SECONDS);
        wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser));
        btnNewSalesOrser.click();
    }
Run Code Online (Sandbox Code Playgroud)

轮询时间有什么用?

java selenium polling

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

MemoryCache-防止项目过期

在我的应用程序中,我使用MemoryCache,但是我不希望项目过期。因此项目被插入到与默认策略缓存,没有AbsoulteExpiration或者SlidingExpiration被设置。

最近,在最后一台高服务器上,我遇到了缓存问题,因为它返回空值代替期望值,并在之前插入到缓存中。事实证明,不仅合格的项目(如明确设置了到期日期的项目)都从缓存中删除。在内存压力下,超过CacheMemoryLimit和/或值时PhysicalMemoryLimit,MemoryCache也会删除其他元素。

如何预防呢?如何确保将元素设置为一次缓存后,可以再次从中安全地获取它?

我考虑过将设置PollingInterval为某个巨大的值,但这只会延迟潜在的问题(并且轮询间隔在文档中被称为最大时间,而不是确切时间或最小时间)。设置PhysicalMemoryLimitPercentage为100%并不能解决问题,因为它引用的是物理安装的内存,而不是整个可用虚拟内存。还是我错了,这确实会有所帮助吗?

.net c# caching polling memorycache

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