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.
はどんな人々がここに何が起こるかアドバイスしてもらえますか?これが起こった原因と解決方法実際に、私は何時間もセロリと闘ってきましたが、正直言って私の学習の道にはかなりの痛みがありました。あなたの助けは非常に高く評価されています。
ご返信ありがとうございます。私はチェックしたが、それは正常に動作します。私は、Rabbitmq Webサーバーインターフェイス(http:// localhost:15672 /#/ users)と同じユーザーとパスワードを使用できます。アクセスと接続をさらに確認する方法を提案できますか? –