小编Sim*_*ray的帖子

使用芹菜任务的多处理池会引发异常

对于那些阅读:我决定使用RQ而不是在运行使用多处理模块的代码时不会失败.我建议你用它.

我试图使用Python 3和redis作为代理在celery任务中使用多处理池(在Mac上运行它).但是,我似乎甚至无法在Celery任务中创建多处理池对象!相反,我得到一个奇怪的例外,我真的不知道该怎么做.

谁能告诉我如何实现这一目标?

任务:

from celery import Celery
from multiprocessing.pool import Pool

app = Celery('tasks', backend='redis', broker='redis://localhost:6379/0')

@app.task
def test_pool():
    with Pool() as pool:
        # perform some task using the pool
        pool.close()
    return 'Done!'
Run Code Online (Sandbox Code Playgroud)

我添加到Celery使用:

celery -A tasks worker --loglevel=info
Run Code Online (Sandbox Code Playgroud)

然后通过以下python脚本运行它:

import tasks

tasks.test_pool.delay()
Run Code Online (Sandbox Code Playgroud)

返回以下芹菜输出:

[2015-01-12 15:08:57,571: INFO/MainProcess] Connected to redis://localhost:6379/0
[2015-01-12 15:08:57,583: INFO/MainProcess] mingle: searching for neighbors
[2015-01-12 15:08:58,588: INFO/MainProcess] mingle: all alone
[2015-01-12 15:08:58,598: WARNING/MainProcess] celery@Simons-MacBook-Pro.local ready.
[2015-01-12 15:09:02,425: INFO/MainProcess] Received task: tasks.test_pool[38cab553-3a01-4512-8f94-174743b05369]
[2015-01-12 15:09:02,436: …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing redis celery

11
推荐指数
1
解决办法
3808
查看次数

标签 统计

celery ×1

multiprocessing ×1

python ×1

redis ×1