问题标签 [task-queue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1907 浏览

ruby-on-rails - Ruby/Rails 同步作业管理器


,我将建立一个 rails 网站,在一些初始用户输入之后,完成一些繁重的计算(通过对 ruby​​ 的 c 扩展,将使用多线程)。由于这些计算将消耗几乎所有的 cpu 时间(也包括内存),因此一次运行的计算不应超过一个。我也不能使用(异步)后台作业(例如延迟作业),因为 rails 必须显示该计算的结果,并且该站点应该在没有 javascript 的情况下工作。
所以我想我需要一个单独的进程,其中所有 rails 实例都必须将其计算请求排队并等待答案(如果队列已满,可能会出现错误消息),这是一种同步作业管理器。

有谁知道是否有具有这种功能的 gem/插件?(nanite对我来说似乎很酷,但似乎只是异步的,所以 rails 实例不知道计算何时完成。对吗?)
另一个想法是使用分布式 ruby​​ (drb) 编写我自己的,但为什么要发明如果它已经存在,再次轮子?

任何帮助,将不胜感激!

编辑:由于 zaius 的提示,我认为我将能够异步执行此操作,所以我将尝试resque

0 投票
6 回答
5513 浏览

java - 用于队列处理的 java API 或框架

我需要一个开源 Java API 或框架来处理队列中的项目。我可以自己开发一些东西,但不想重新发明轮子(而且我在多线程方面没有太多经验)。有这样的事吗?

我能想到的最接近的解决方案是业务流程管理 (BPM) 解决方案。

现在,我正在使用多个 Quartz 作业来处理队列中的项目。由于可扩展性和并发性问题,它并没有真正奏效。

0 投票
1 回答
312 浏览

google-app-engine - Google App Engine 请求状态

即使系统抛出500,是否可以将http请求状态设置为200?我有一个正在运行的任务。当 GAE 抛出 http 请求 500 时,我想在任务结束时手动将其设置为 200,以防止重试任务。

0 投票
1 回答
258 浏览

java - 当 App Engine (Java) 启动新实例时,如何确保任务队列 Memcache cron 在它们之间共享?

这是一个问题,我的应用程序在站点上偶尔遇到 CPU 限制峰值,其中几乎所有工作都是由于 cron 任务完成的,该任务每小时频繁运行以调用重新填充内存缓存的任务队列。

最近,该网站的流量激增,导致多个实例启动。

然而,令我惊讶的是,在那些日子里,我不得不降低 Memcache 任务的频率,尽管只有不到 1% 的 CPU 使用率与流量峰值有关。(在这个应用程序中完成的 99% 的工作是 (a) 在内存缓存任务队列中和 (b) 在客户端 JavaScript/JSON 逻辑中)。

我想知道的是,启动的其他实例是否都需要它们自己的 Memcache 任务队列,也许这就是为什么我看到与那些天重新填充 memcache 的任务队列相关的 CPU 使用率要高得多 -任务实际上是为每个实例分别执行

如果是这样,我如何确保任务队列 - 以及它填充的 Memcache - 在实例之间共享 - 如果这可能的话?

0 投票
2 回答
3194 浏览

google-app-engine - Google App Engine 任务截止日期

有没有办法在执行任务时处理任何软期限?DeadlineExceededError 在执行 10 分钟后被抛出,之后我有几秒钟的时间去做一些事情。我想在任务结束之前清理一些东西并创建一个新任务。这可能需要几秒钟。有没有办法通过捕获大约 9 分钟左右的任何异常来做到这一点。我知道我可以在 9 分钟后手动抛出异常。但这可以由 GAE 自动完成吗?

以上是我的代码。index 是一个列表,从 0 开始。它将在 FillMtx 内部递增。一旦抛出超过最后期限的错误,我想从最后增加索引的地方继续。我收到以下错误

我发现一个新任务已创建并排队。但是为什么 GAE 仍然会抛出这个错误呢?

0 投票
4 回答
979 浏览

java - Google App Engine (Java) TaskQueue API:如何查询正在运行/待处理的任务数?

是否可以以编程方式查询任务队列 API 以查看当前正在执行/待处理的任务数量?

我在 API 中看不到任何方法来执行此操作,因此我求助于在 Datastore 中创建对象来表示排队的任务。运行时,这些任务会从数据存储区中删除其相应的条目。

可以想象,这很容易不同步。实际上,我很高兴能够对给定队列名称的队列中的任务进行简单计数。

0 投票
1 回答
413 浏览

java - Google App Engine - 任务队列名称和事务

在 Google App Engine 文档中,它如下所述(请参阅此处)。

事务性任务不得具有用户指定的名称。

事务中的任务是自动分配名称还是有其他原因?

0 投票
1 回答
859 浏览

python - 使用 Python API 的 Google App Engine 任务队列错误

我已经为我正在玩的 Flask + GAE 项目实现了一个任务队列操作,以了解有关 Python Web 开发的更多信息,但我收到以下错误,我无法追踪任何有关它的信息。

我有一个视图正在接受来自我的应用程序中另一个视图的 POST 请求,据我所知,它正在执行我期望的所有处理,除了它到达最后并吐出它。我猜这是因为我在 GAE 开发服务器日志中看到了这个输出:

check_for_spam 东西是一个函数,它通过 Defensio API 运行一些数据以确定它是否是垃圾邮件。这是代码

任何有关解决此问题的帮助将不胜感激。

0 投票
3 回答
1938 浏览

python - 在 Django 中使用 Google App Engine Queues 服务

我正在尝试使用 Google App Engine 队列 API,但在测试时遇到了问题。似乎在流程的某些部分中,CSRF 无法正常工作。

据我了解,api执行调用url并在后台发出http请求的任务。

API 调用的完整 url 是 → http://localhost.localdomain:8000/admin/cooking/recipe/36/chefworker/

当它引发此异常时:

因此,GAE api 为在后台执行任务而发出的请求中缺少 csrf 中间件、cookie、某些数据或响应本身。

如何在不禁用 Django 上的 CSRF 的情况下解决这个问题?但是,djangoappengine 完全可以吗?

下面是我正在使用的 models.py 和 admin.py 文件。

模型.py

管理员.py

重要说明: 很难调试此错误,因为 dev_appserver 记录器只是引发 403 错误,没有其他信息;所以,我必须修补文件 google/appengine/api/taskqueue/taskqueue_stub.py 第 574 行并添加“logging.info('response --- \n%s' % result)”以获得输出。

0 投票
3 回答
1703 浏览

python - Google App Engine 负载对象

python - 如何在python任务的有效负载中发送类对象?我想在任务的参数中发送一个对象。
当我使用simplejson时,我得到错误:Object is not serializable
当我使用泡菜时,我得到KeyValue Error.
这该怎么做 ?

这是我要序列化的类

当我将腌制对象作为有效负载传递并稍后将其卸载时,出现以下错误