簡體   English   中英

在芹菜rabbitmq交換類型主題不能正常工作

[英]in celery rabbitmq exchange type topic is not working properly

我有兩個python項目。 兩者都啟用了芹菜。 我要在這里執行的操作來自項目A,我正在使用send_task()方法發送任務。 我要發送的任務在項目B中。因此,項目B的工作人員啟動並顯示了任務。 直到這種情況,一切都正常。 但是,當我讓項目A的工作人員開始在這里提供關鍵錯誤時。 這里確切發生的是:1)第一次嘗試send_task()時,項目B的工作人員正在接收任務。 一切都按預期進行。 2)在第二次嘗試send_task()時失敗。 由於項目A的工作人員正在嘗試接收項目A中不存在的任務,因此其拋出鍵錯誤。 3)在send_task()項目的第三次嘗試中,項目B的工作程序正在接收任務。 一切都按預期進行。 4)第四次嘗試send_task()失敗。 由於項目A的工作人員正在嘗試接收項目A中不存在的任務,因此其拋出鍵錯誤。 此過程不斷重復。

項目隊列:

                .> mplogin.sync     exchange=mplogin(topic) key=mplogin.sync


[tasks]


[2016-06-03 11:11:04,427: INFO/MainProcess] Connected to amqp://guest:**@localhost:5672//
[2016-06-03 11:11:04,468: INFO/MainProcess] mingle: searching for neighbors
[2016-06-03 11:11:05,476: INFO/MainProcess] mingle: all alone
[2016-06-03 11:11:05,984: WARNING/MainProcess] celery@gaurav-All-Series ready.

項目B隊列:

                .> mplogin.sync     exchange=mplogin(topic) key=mplogin.sync


[tasks]
  . mplogin.sync.register

[2016-06-03 11:12:57,941: INFO/MainProcess] Connected to amqp://guest:**@localhost:5672//
[2016-06-03 11:12:57,949: INFO/MainProcess] mingle: searching for neighbors
[2016-06-03 11:12:58,955: INFO/MainProcess] mingle: all alone
[2016-06-03 11:12:58,980: WARNING/MainProcess] /usr/local/lib/python2.7/dist-packages/kombu/pidbox.py:75: UserWarning: A node named celery@gaurav-All-Series is already using this process mailbox!

Maybe you forgot to shutdown the other node or did not do so properly?
Or if you meant to start multiple nodes on the same host please make sure
you give each node a unique node name!

  warnings.warn(W_PIDBOX_IN_USE.format(node=self))
[2016-06-03 11:12:58,983: WARNING/MainProcess] celery@gaurav-All-Series ready.

我正在讓兩個工人都在使用

celery -A tasks worker -l info

項目B中的任務:-

@sync_app.task(name='mplogin.sync.register')
def register(user_obj):
    return "Its working!!!!"

從項目A發送任務:

    from tasks import login_async_app

    abc = login_async_app.send_task('mplogin.sync.register',kwargs={'user_obj': 500})

sync_app是項目B中的celery應用程序,而login_async_app是項目A中的celery應用程序。

我認為我面臨的這個問題是因為我嘗試使用direct的exchange_type =“ topic”但無法正常工作。 請通過這個指導我。

兩名工作人員都在使用同一隊列中的任務。

當啟動工作程序A時,它沒有識別任何任務(從日志中可以看到)。

[tasks]

工人B僅識別1個任務。

[tasks]
  . mplogin.sync.register

您必須確保兩個工作人員都能識別這兩個任務。 您可以通過正確配置芹菜來做到這一點。

您還可以使用CELERY_IMPORTS提及芹菜導入的模塊列表。

CELERY_IMPORTS = ('foo.bar.app1.task1', 'foo.bar.app2.task2')

通過正確導入任務,可以避免該錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM