2016-12-31 60 views
0

我在学习如何使用Celery和Rabbitmq一起执行预定的Python任务,并遇到了连接问题。具体而言,我尝试从网上提供的示例中学习(https://github.com/jimmykobe1171/celery-demo/tree/master)。结构和语法是如下:使用Rabbitmq在Celery 4.0.2上运行Python 3.5.2程序

结构:

test_celery 
    __init__.py 
    celery.py 
    tasks.py 
    run_tasks.py 

celery.py:

from __future__ import absolute_import, unicode_literals 
from celery import Celery 

app = Celery('test_celery', 
      broker='amqp://john:[email protected]/john_vhost', 
      backend='rpc://', 
      include=['test_celery.tasks']) 

tasks.py:

from __future__ import absolute_import 
from test_celery.celery import app 
import time 

@app.task 
def longtime_add(x, y): 
    print ('long time task begins') 
    # sleep 5 seconds 
    time.sleep(5) 
    print ('long time task finished') 
    return (x + y) 

run_tasks.py:

from .tasks import longtime_add 
import time 

if __name__ == '__main__': 
    result = longtime_add.delay(1,2) 
    # at this time, our task is not finished, so it will return False 
    print ('Task finished? ', result.ready()) 
    print ('Task result: ', result.result) 
    # sleep 10 seconds to ensure the task has been finished 
    time.sleep(10) 
    # now the task should be finished and ready method will return True 
    print ('Task finished? ', result.ready()) 
    print ('Task result: ', result.result) 

然后我运行:

$ celery -A test_celery worker --loglevel=info 

然后,服务器首先进行连接,但后来与下面的消息否认:

-------------- [email protected] v4.0.2 (latentcall) 
---- **** ----- 
--- * *** * -- Windows-7-6.1.7601-SP1 2016-12-31 22:04:54 
-- * - **** --- 
- ** ---------- [config] 
- ** ---------- .> app:   test_celery:0x3d2b828 
- ** ---------- .> transport: amqp://john:**@localhost:5672/john_vhost 
- ** ---------- .> results:  rpc:// 
- *** --- * --- .> concurrency: 4 (prefork) 
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker) 
--- ***** ----- 
-------------- [queues] 
       .> celery   exchange=celery(direct) key=celery 


[tasks] 
    . test_celery.tasks.longtime_add 
... 
_winapi.DUPLICATE_SAME_ACCESS | _winapi.DUPLICATE_CLOSE_SOURCE) 
PermissionError: [WinError 5] Access Denied. 

可以在任何人的建议在这里发生了什么?是什么导致了这种情况发生,以及如何解决它?事实上,我一直在与芹菜挣扎几个小时,说实话,这在我的学习路上非常痛苦。非常感激你的帮助。

回答

0

可能是登录名/密码问题。

检查您对Rabbitmq数据库的访问。

+0

感谢您的及时回复。我已检查,但它工作正常。我可以在Rabbitmq Web服务器接口(http:// localhost:15672 /#/ users)上使用相同的用户名和密码。你能提出任何方法来进一步检查访问和连接? –

0

我似乎能够通过将Celery 4.0.2切换到3.1.0来解决此问题。希望这个版本不会与其他应用程序发生其他崩溃。

相关问题