python - RabbitMQ 管理 API 调用失败 : HTTP 500: Internal Server Error

标签 python rabbitmq celery

我正在使用带有 RabbitMQ 的 Celery Flower 作为消息代理。但是我 :getting 讨厌的错误

ERROR - RabbitMQ management API call failed: HTTP 500: Internal Server Error



每次我尝试访问 RabbitMQ 管理界面 ( http://localhost:15672/#/queues ) 或 Celery Broker ( http://localhost:5555/broker ) 上的 RabbitMQ 队列时。

这是详细的日志信息:

=ERROR REPORT==== 15-Jan-2017::23:12:19 === webmachine error: path="/api/queues/%2F" {error,{error,function_clause, [{mochijson2,json_encode_string_unicode, [{error,[],<<166,65,92,180,0,0,0,0,0>>}, {encoder,null,false}, """], [{file,"src/mochijson2.erl"},{line,274}]}, {mochijson2,'-json_encode_proplist/2-fun-0-',3, [{file,"src/mochijson2.erl"},{line,198}]}, {lists,foldl,3,[{file,"lists.erl"},{line,1248}]}, {mochijson2,json_encode_proplist,2, [{file,"src/mochijson2.erl"},{line,202}]}, {mochijson2,'-json_encode_proplist/2-fun-0-',3, [{file,"src/mochijson2.erl"},{line,199}]}, {lists,foldl,3,[{file,"lists.erl"},{line,1248}]}, {mochijson2,json_encode_proplist,2, [{file,"src/mochijson2.erl"},{line,202}]}, {mochijson2,'-json_encode_array/2-fun-0-',3, [{file,"src/mochijson2.erl"},{line,189}]}]}}



RabbitMQ Web 管理给了我:

Got response code 500 with body {"error":"Internal Server Error","reason":"{error,{error,function_clause,\n [{mochijson2,json_encode_string_unicode,\n [{error,[],<<166,65,92,180,0,0,0,0,0>>},\n {encoder,null,false},\n "\""],\n [{file,"src/mochijson2.erl"},{line,274}]},\n {mochijson2,'-json_encode_proplist/2-fun-0-',3,\n [{file,"src/mochijson2.erl"},{line,198}]},\n {lists,foldl,3,[{file,"lists.erl"},{line,1248}]},\n {mochijson2,json_encode_proplist,2,\n [{file,"src/mochijson2.erl"},{line,202}]},\n {mochijson2,'-json_encode_proplist/2-fun-0-',3,\n [{file,"src/mochijson2.erl"},{line,199}]},\n {lists,foldl,3,[{file,"lists.erl"},{line,1248}]},\n {mochijson2,json_encode_proplist,2,\n [{file,"src/mochijson2.erl"},{line,202}]},\n {mochijson2,'-json_encode_array/2-fun-0-',3,\n [{file,"src/mochijson2.erl"},{line,189}]}]}}\n"}



我在用:
  • Ubuntu 14.04
  • Python 2.7.6
  • 花 0.9.1
  • celery 4.0.2
  • RabbitMQ 3.6.6
  • Erlang/OTP 19

  • RabbitMQ 管理插件已启用(rabbitmq-plugins enable rabbitmq_management)。

    这是 rabbitmqctl 状态的输出:

    [{pid,28609}, {running_applications, [{rabbitmq_management,"RabbitMQ Management Console","3.6.6"}, {amqp_client,"RabbitMQ AMQP Client","3.6.6"}, {rabbitmq_management_agent,"RabbitMQ Management Agent","3.6.6"}, {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.6.6"}, {rabbit,"RabbitMQ","3.6.6"}, {os_mon,"CPO CXC 138 46","2.4.1"}, {webmachine,"webmachine","1.10.3"}, {mochiweb,"MochiMedia Web Server","2.13.1"}, {ssl,"Erlang/OTP SSL application","8.1"}, {public_key,"Public key infrastructure","1.3"}, {crypto,"CRYPTO","3.7.2"}, {rabbit_common,[],"3.6.6"}, {xmerl,"XML parser","1.3.12"}, {asn1,"The Erlang ASN1 compiler version 4.0.4","4.0.4"}, {syntax_tools,"Syntax tools","2.1.1"}, {mnesia,"MNESIA CXC 138 12","4.14.2"}, {compiler,"ERTS CXC 138 10","7.0.3"}, {ranch,"Socket acceptor pool for TCP protocols.","1.2.1"}, {inets,"INETS CXC 138 49","6.3.4"}, {sasl,"SASL CXC 138 11","3.0.2"}, {stdlib,"ERTS CXC 138 10","3.2"}, {kernel,"ERTS CXC 138 10","5.1.1"}]}, {os,{unix,linux}}, {erlang_version, "Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:4:4] [async-threads:64] [kernel-poll:true]\n"}, {memory, [{total,112070616}, {connection_readers,471152}, {connection_writers,171664}, {connection_channels,494680}, {connection_other,407232}, {queue_procs,534792}, {queue_slave_procs,0}, {plugins,2121728}, {other_proc,12017232}, {mnesia,93584}, {mgmt_db,5114688}, {msg_index,49304}, {other_ets,1902144}, {binary,52694768}, {code,24783822}, {atom,1033401}, {other_system,10180425}]}, {alarms,[]}, {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]}, {vm_memory_high_watermark,0.4}, {vm_memory_limit,6691391078}, {disk_free_limit,50000000}, {disk_free,59039645696}, {file_descriptors, [{total_limit,3996}, {total_used,23}, {sockets_limit,3594}, {sockets_used,20}]}, {processes,[{limit,1048576},{used,454}]}, {run_queue,0}, {uptime,2498}, {kernel,{net_ticktime,60}}]



    这是我运行 Celery 的方式:

    启动 3 个 celery worker :
    celery worker -A celeryapp --config celeryconfig --workdir /proj -l DEBUG --soft-time-limit=3500 --time-limit=3600 --autoscale=2,1 -S /proj/states.db -s /proj/celerybeat-schedule.db -f /proj/logs/celery_worker_1_%n%I.log --pidfile /tmp/celery_w1.pid -n worker1@%d
    celery worker -A celeryapp --config celeryconfig --workdir /proj -l DEBUG --soft-time-limit=3500 --time-limit=3600 --autoscale=2,1 -S /proj/states.db -s /proj/celerybeat-schedule.db -f /proj/logs/celery_worker_2_%n%I.log --pidfile /tmp/celery_w2.pid -n worker2@%d
    celery worker -A celeryapp --config celeryconfig --workdir /proj -l DEBUG --soft-time-limit=3500 --time-limit=3600 --autoscale=2,1 -S /proj/states.db -s /proj/celerybeat-schedule.db -f /proj/logs/celery_worker_3_%n%I.log --pidfile /tmp/celery_w3.pid -n worker3@%d
    

    开始 celery 节拍:
    celery beat -A celeryapp --config celeryconfig --workdir /proj -l DEBUG -s /proj/celerybeat-schedule.db -f /proj/logs/celery_%n%I.log --pidfile /tmp/celery.pid
    

    开始 celery 花:
    celery flower -A celeryapp --workdir=/proj/ --broker=amqp://guest:guest@localhost:5672// --broker-api=http://guest:guest@localhost:15672/api/ --db=/proj/flower.db --logging=debug --basic-auth=guest:guest
    

    我在 RabbitMQ 的 Github 问题中发布了这个问题,但它是 rejected

    最佳答案

    你的 Elang 版本有点旧。

    使用最新版本更新,管理界面需要新的 Erlang 版本

    https://www.erlang-solutions.com/resources/download.html

    wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
    sudo dpkg -i erlang-solutions_1.0_all.deb
    sudo apt-get update
    sudo apt-get install erlang
    

    关于python - RabbitMQ 管理 API 调用失败 : HTTP 500: Internal Server Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41667169/

    相关文章:

    python - 通过 pd.TimeGrouper ('D' 按天聚合每小时时间序列;问题@时间戳00 :00:00 (hour 24)

    python - 如何删除python列表中的对象

    rabbitmq - RX 与 rabbitmq 或 zeromq 等消息队列的对比?

    java - RabbitMQ 正在运行,但仍然出现连接被拒绝的连接异常

    python - Celery 不使用 Redis 在 Kubernetes 中处理任务

    django - 从 Redis 后端删除所有 Celery 结果

    python - OpenCV人脸识别程序崩溃

    Python 脚本适用于 Mac 而不是 Ubuntu

    crash - 控制rabbitmq 'name'而不是 'sname'

    python - 在 flask 中开始 celery : AttributeError: 'Flask' object has no attribute 'user_options'