2016-12-31 9 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に切り替えることでこの問題を解決できるようです。うまくいけば、このバージョンは他のアプリケーションで他にクラッシュすることはないでしょう。

関連する問題