0

我正在开发 celery 任务来聚合来自 facebook 和 twitter 的社交内容。

任务如下

  • facebook_service_handler
  • facebook_contents_handler
  • image_resize
  • 保存内容信息

'facebook_service_handler' 和 'facebook_contents_handler' 任务使用 facebook open api 和 urlopen 函数。

当 urlopen 请求不多时,它运行良好。(低于 4~5 次)但是当 urlopen 请求超过 4~5 时,worker 不再工作了。

另外,当芹菜停止时,我打破了redis和celeryd,并重新启动了celeryd和redis。最后的任务被执行

有没有人帮我解决这个问题??

我正在mac os lion上工作。

4

1 回答 1

2

理想情况下,您应该有两个不同的队列,一个用于网络 I/O(使用 eventlet,您可以使用它“提升”更多进程),一个用于其他任务(使用多处理)。如果您觉得这很复杂,请查看CELERYD_TASK_SOFT_TIME_LIMIT。在 celery 任务中使用 urllib.open 时我遇到了类似的问题,因为连接可能会挂起并弄乱整个系统。

于 2012-04-25T08:32:14.993 回答