标签: task-queue

Node.js中的后台进程

处理NodeJS应用程序中的后台进程有什么好处?

场景:在用户向应用程序发布内容后,我想要处理数据,从外部资源请求其他数据等.所有这些都非常耗时,所以我想要它来自req/res循环.理想的情况是拥有一个可以快速转储作业的作业队列,守护程序或任务运行器将始终使用最旧的作业并对其进行处理.

在RoR中,我会用延迟工作这样做.这个API的Node等价物是什么?

javascript background-process task-queue node.js

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

在rabbitmq中池化连接或通道之间是否存在性能差异?

我是Rabbitmq(和编程)的新手,如果这很明显,请提前对不起.我正在创建一个池来共享正在处理队列的线程,但我不确定是否应该在池中使用连接或通道.

我知道我需要通道来完成实际工作,但每个连接有一个通道(从队列中获得更多吞吐量)是否有性能优势?或者我最好只使用每个应用程序的单个连接并汇集多个渠道?

注意:因为我正在汇集资源,初始成本不是一个因素,因为我知道连接比渠道更昂贵.我对吞吐量更感兴趣.

queue message-queue rabbitmq task-queue

57
推荐指数
2
解决办法
3万
查看次数

什么是App Engine的任务队列中的TombstonedTaskError?

什么TombstonedTaskError意思?在尝试从cron-job向队列中添加任务时会引发它:

Traceback (most recent call last):
  File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 501, in __call__
    handler.get(*groups)
  File "/base/data/home/apps/.../tasks.py", line 132, in get
    ).add(queue_name = 'userfeedcheck')
  File "/base/python_lib/versions/1/google/appengine/api/labs/taskqueue/taskqueue.py", line 495, in add
    return Queue(queue_name).add(self)
  File "/base/python_lib/versions/1/google/appengine/api/labs/taskqueue/taskqueue.py", line 563, in add
    self.__TranslateError(e)
  File "/base/python_lib/versions/1/google/appengine/api/labs/taskqueue/taskqueue.py", line 619, in __TranslateError
    raise TombstonedTaskError(error.error_detail)
TombstonedTaskError
Run Code Online (Sandbox Code Playgroud)

搜索文档只有以下内容:

exception TombstonedTaskError(InvalidTaskError)
    Task has been tombstoned.
Run Code Online (Sandbox Code Playgroud)

..这不是特别有帮助.

我在App Engine代码中找不到任何有用的东西..

google-app-engine task-queue

34
推荐指数
1
解决办法
4684
查看次数

PHP中的并行处理 - 你是如何做到的?

我目前正在尝试在php中实现一个作业队列.然后,队列将作为批处理作业处理,并且应该能够并行处理某些作业.

我已经做了一些研究并找到了几种方法来实现它,但我并没有真正意识到它们的优点和缺点.

例如,通过多次调用脚本来执行并行处理,fsockopen如下所述:
PHP中的简单并行处理

我找到的另一种方法是使用这些curl_multi功能.
curl_multi_exec PHP文档

但我认为这两种方式会增加相当多的开销,在队列上创建批处理应该主要在后台运行吗?

我也读到了关于pcntl_fork这似乎也是一种处理问题的方法.但是如果你真的不知道自己在做什么(就像我现在这样;),那看起来就会变得非常混乱.)

我也看了一下Gearman,但在那里我还需要根据需要动态生成工作线程,而不是只运行一些,然后让gearman作业服务器将它发送给自由工作者.特别是因为线程应该在执行一个作业后干净利落地退出,不会遇到最终的内存泄漏(在该问题中代码可能不完美).
Gearman入门

所以我的问题是,你如何处理PHP中的并行处理?为什么选择你的方法,不同的方法有哪些优点/缺点?

感谢您的任何意见.

php parallel-processing multithreading task-queue

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

如何使用q.js promises来处理多个异步操作

注意:此问题也在此处的 Q.js邮件列表中交叉发布.


我遇到了多个异步操作的情况,我接受答案指出使用诸如q.js之类的库使用Promise会更有益.

我确信重构我的代码以使用Promises但因为代码很长,我已经修剪了不相关的部分并将关键部分导出到一个单独的repo中.

回购在这里,最重要的文件就是这个.

要求是我希望在遍历所有拖放的文件后,pageSizes不为空.

问题是getSizeSettingsFromPage函数中的FileAPI操作导致getSizeSettingsFromPage异步.

所以我不能放置checkWhenReady(); 像这样.

function traverseFiles() {
  for (var i=0, l=pages.length; i<l; i++) {
    getSizeSettingsFromPage(pages[i], calculateRatio);   
  }
  checkWhenReady(); // this always returns 0.
}
Run Code Online (Sandbox Code Playgroud)

这有效,但并不理想.在完成所有pages已成功完成此函数calculateRatio 之后,我更喜欢将checkWhenReady调用为ONCE .

function calculateRatio(width, height, filename) {
  // .... code 
  pageSizes.add(filename, object);
  checkWhenReady(); // this works but it is not ideal. I prefer to call this method AFTER all the `pages` have …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous callback task-queue

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

谷歌应用引擎中队列的"桶大小"是什么意思?

Google应用引擎任务队列的配置为(示例)

  <queue>
    <name>mail-queue</name>
    <rate>5/m</rate>
    <bucket-size>10</bucket-size>
  </queue>
Run Code Online (Sandbox Code Playgroud)

在这里,"桶大小"是什么意思?我在谷歌应用引擎文档中找不到关于此的综合文档.

将此值指定为10意味着如果100个任务在一个时刻排队,那么只有10个会被放入队列中而其余的将被忽略吗?

google-app-engine bucket task-queue

21
推荐指数
1
解决办法
6363
查看次数

在Google App Engine上推送与拉队列

到目前为止,没有人(甚至GAE文档)都没有能够清楚地描述推送队列和拉取队列之间的区别.

我的理解是Task Queue API允许您定义可以将工作排入的任务队列.不知何故,这与GAE的自动缩放功能一起使用,因此您无需显式管理消耗这些队列任务的工作线程数:GAE就是为您完成的.

但是我无处可寻找推送和拉取队列之间差异的"King's English"描述.什么是"推队"推?什么是"拉队列"拉?它们都配置在里面queues.xml吗?

java api google-app-engine worker-thread task-queue

21
推荐指数
1
解决办法
5874
查看次数

在GAE 1.7.3中使用DeferredTasks时耗尽PermGen空间

我最近切换到Google App Engine Java SDK 1.7.3.从那时起,每次我将DeferredTasks提交到任务队列时,我的PermGen空间都用完了.

  • 将应用程序部署到App Engine时不会发生这种情况.它只发生在本地.但它阻止了我的本地测试和失败的集成测试.
  • 它发生在使用Java 6的MacOSX 10.7.5上

    $ java -version 
    java version "1.6.0_37"
    Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
    Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
    
    Run Code Online (Sandbox Code Playgroud)
  • 这是我发现问题时堆栈跟踪的一部分.

    INFO: Successfully processed ../target/projectName/WEB-INF/queue.xml
    Nov 1, 2012 3:04:00 PM com.google.appengine.api.taskqueue.dev.LocalTaskQueue init
    INFO: LocalTaskQueue is initialized
    Nov 1, 2012 3:04:01 PM org.quartz.simpl.SimpleThreadPool initialize
    INFO: Job execution threads will use class loader of thread: 1255545583@qtp-1458850232-0
    Nov 1, 2012 3:04:02 PM org.quartz.core.QuartzScheduler <init>
    INFO: …
    Run Code Online (Sandbox Code Playgroud)

google-app-engine memory-leaks permgen task-queue

18
推荐指数
1
解决办法
1843
查看次数

GAE:使用测试平台进行单元测试任务

我正在使用testbed对我的谷歌应用引擎应用进行单元测试,而我的应用使用了一个任务队列.

当我在单元测试期间向任务队列提交任务时,似乎任务在队列中,但任务不会执行.

如何在单元测试期间执行任务?

python google-app-engine unit-testing task-queue

17
推荐指数
3
解决办法
4325
查看次数

RabbitMQ:芹菜提供什么Pika没有?

我一直致力于通过RabbitMQ来完成一些分布式任务.

我花了一些时间试图让Celery做我想做的事情,但却无法让它发挥作用.

然后我尝试使用Pika和刚刚工作的东西,完美无缺,几分钟之内.

使用Pika而不是芹菜,有什么我错过的吗?

python rabbitmq task-queue celery pika

17
推荐指数
2
解决办法
8058
查看次数