Celery send_task 不发送任务

Drx*_*xxd 5 python rabbitmq celery

我有一台使用 RabbitMQ 运行 Celery 的服务器。但是当我尝试使用 send_task 发送任务时,它只返回一个 AsyncResult 对象。
但实际任务没有运行(即使工作人员和队列为空)

c = Celery("tasks", broker="amqp://guest@127.0.0.1//")
c.send_task("tasks.printing.test_print", (100), queue="print_queue", routing_key="printing.test_print")
Run Code Online (Sandbox Code Playgroud)

我的芹菜配置是:

CELERY_QUEUES = (
    Queue('default',    routing_key='task.#'),
    Queue('print_queue', routing_key='printing.#'),
)
CELERY_DEFAULT_EXCHANGE = 'tasks'
CELERY_ROUTES = {
        'tasks.printing.test_print': {
        'queue': 'print_queue',
        'routing_key': 'printing.test_print',
    }}
BROKER_URL = 'amqp://'
Run Code Online (Sandbox Code Playgroud)

我只执行一名工人:

celery -A celerymain worker --loglevel=debug 
Run Code Online (Sandbox Code Playgroud)

这是它的初始日志:

- ** ---------- [config]
- ** ---------- .> app:         __main__:0x7eff96903b50
- ** ---------- .> transport:   amqp://guest:**@localhost:5672//
- ** ---------- .> results:     amqp://
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ---- 
--- ***** ----- [queues]  -------------- .> default          exchange=tasks(topic) key=task.#
                .> print_queue       exchange=tasks(topic) key=printing.#

[tasks]   . test_print
Run Code Online (Sandbox Code Playgroud)

这是任务:

class test_print(Task):

    name = "test_print"

    def run(self,a):
        log.info("running")
        print a
Run Code Online (Sandbox Code Playgroud)

rabbitMQ 队列“print_queue”保持为空,rabbitMQ 日志中没有任何新内容。
我有 4 GB 可用空间,所以这不是磁盘空间问题。

这里可能有什么问题?

Drx*_*xxd 4

我通过从 send_task 中删除routing_key 参数解决了这个问题。
我真的不知道为什么这是一个问题,但至少它有效