gpt4 book ai didi

python - Celery/Redis : redis. 异常。ResponseError: 'set' 命令的参数数量错误

转载 作者:行者123 更新时间:2023-12-05 02:43:54 29 4
gpt4 key购买 nike

我正在尝试在我的 Flask 应用程序中使用 Celery 进行异步调用。为了完成这次运行,我做了以下工作:

  1. 在我的pycharm环境中安装了celery
  2. 已安装 redis(来自此处:https://github.com/dmajkic/redis/downloads)
  3. 在我的 main.py 应用程序中实现 celery
from flask import Flask
from celery import Celery

flask_app = Flask(__name__)
flask_app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0'
flask_app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0'

celery = Celery(flask_app.name, broker=flask_app.config['CELERY_BROKER_URL'],
backend=flask_app.config['CELERY_RESULT_BACKEND'])


@celery.task
def start_learn():
a = 1+1
return a


@flask_app.route("/ConLearn/XML/LearnRequest", methods=['POST'])
def learnRequest():
task = start_learn.apply_async()
return "", 201
  1. 使用“redis-server.exe”(64 位)运行 redis redis runs
  1. 启动flask app main.py
  2. 在终端中启动 celery celery -A main.celery worker

--> 失败发生:

2021-03-21 18:09:32.577271: W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
2021-03-21 18:09:32.587765: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.

-------------- celery@md2cj75c v5.0.5 (singularity)
--- ***** -----
-- ******* ---- Windows-10-10.0.18362-SP0 2021-03-21 18:09:43
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app: main:0x213db0f9940
- ** ---------- .> transport: redis://localhost:6379/0
- ** ---------- .> results: redis://localhost:6379/0
- *** --- * --- .> concurrency: 4 (solo)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery


[2021-03-21 18:09:45,075: CRITICAL/MainProcess] Unrecoverable error: ResponseError("wrong number of arguments for 'set' command")
Traceback (most recent call last):
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\worker\worker.py", line 203, in start
self.blueprint.start(self)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\bootsteps.py", line 116, in start
step.start(parent)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\bootsteps.py", line 365, in start
return self.obj.start()
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\worker\consumer\consumer.py", line 311, in start
blueprint.start(self)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\bootsteps.py", line 116, in start
step.start(parent)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\worker\consumer\mingle.py", line 37, in start
self.sync(c)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\worker\consumer\mingle.py", line 41, in sync
replies = self.send_hello(c)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\worker\consumer\mingle.py", line 54, in send_hello
replies = inspect.hello(c.hostname, our_revoked._data) or {}
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\app\control.py", line 152, in hello
return self._request('hello', from_node=from_node, revoked=revoked)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\app\control.py", line 94, in _request
return self._prepare(self.app.control.broadcast(
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\celery\app\control.py", line 474, in broadcast
return self.mailbox(conn)._broadcast(
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\kombu\pidbox.py", line 349, in _broadcast
return self._collect(reply_ticket, limit=limit,
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\kombu\pidbox.py", line 391, in _collect
self.connection.drain_events(timeout=timeout)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\kombu\connection.py", line 324, in drain_events
return self.transport.drain_events(self.connection, **kwargs)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\kombu\transport\virtual\base.py", line 963, in drain_events
get(self._deliver, timeout=timeout)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\kombu\transport\redis.py", line 381, in get
self.maybe_restore_messages()
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\kombu\transport\redis.py", line 339, in maybe_restore_messages
return channel.qos.restore_visible(
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\kombu\transport\redis.py", line 196, in restore_visible
with Mutex(client, self.unacked_mutex_key,
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\contextlib.py", line 113, in __enter__
return next(self.gen)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\kombu\transport\redis.py", line 117, in Mutex
lock_acquired = lock.acquire(blocking=False)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\redis\lock.py", line 187, in acquire
if self.do_acquire(token):
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\redis\lock.py", line 203, in do_acquire
if self.redis.set(self.name, token, nx=True, px=timeout):
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\redis\client.py", line 1801, in set
return self.execute_command('SET', *pieces)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\redis\client.py", line 901, in execute_command
return self.parse_response(conn, command_name, **options)
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\redis\client.py", line 915, in parse_response
response = connection.read_response()
File "C:\Users\z002p84d\.conda\envs\ConLearn\lib\site-packages\redis\connection.py", line 756, in read_response
raise response
redis.exceptions.ResponseError: wrong number of arguments for 'set' command

谁能帮我解决这个问题?我现在花了几个小时在互联网上搜索并尝试不同的设置。

谢谢,

马蒂亚斯

最佳答案

您似乎使用的是旧版 Redis。您的链接包含 2011 年(10 年前)的 Redis 2.4.5。

在 celery 中 source code可以看到如下需求:redis>=3.2.0。

您可以按照 docs 中的说明尝试通过 pip 安装:

pip install -U "celery[redis]"

关于python - Celery/Redis : redis. 异常。ResponseError: 'set' 命令的参数数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66735443/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com