将芹菜工人与Flask一起使用时出现协议错误

2024-09-29 23:22:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用烧瓶管理远程芹菜工人。flask中的配置是redis用于后端,rabbitmq用作消息代理

Flask使用多个线程运行,芹菜get()用于两个位置

@app.routes("/route1")
def method1():
    result1_obj = remote_method_1.apply_async()
    result1 = result1_obj.get()

@app.routes("/route2")
def method2():
    result2_obj = remote_method_2.apply_async()
    result2 = result2_obj.get()

因此,每当method1()和method2()下的两个不同线程同时调用get()时

错误日志如下:-

Traceback (most recent call last):
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\flask\app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\flask_restplus\api.py", line 325, in wrapper
    resp = resource(*args, **kwargs)
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\flask\views.py", line 89, in view
    return self.dispatch_request(*args, **kwargs)
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\flask_restplus\resource.py", line 44, in dispatch_request
    resp = meth(*args, **kwargs)
  File "C:\Users\venugopal.venkatesh\OneDrive - Veoneer\Documents\sprint35\fdt_report_gen\src\application\routes.py", line 89, in wrap
    return f(*args, **kwargs)
  File "C:\Users\venugopal.venkatesh\OneDrive - Veoneer\Documents\sprint35\fdt_report_gen\src\db\__init__.py", line 281, in wrap
    return f(*args, **kwargs)
  File "C:\Users\venugopal.venkatesh\OneDrive - Veoneer\Documents\sprint35\fdt_report_gen\src\doors\routes.py", line 141, in post
    abort_res = abort_obj.get()
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\celery\result.py", line 237, in get
    on_message=on_message,
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\celery\backends\asynchronous.py", line 200, in wait_for_pending
    for _ in self._wait_for_pending(result, **kwargs):
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\celery\backends\asynchronous.py", line 268, in _wait_for_pending
    on_interval=on_interval):
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\celery\backends\asynchronous.py", line 55, in drain_events_until
    yield self.wait_for(p, wait, timeout=interval)
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\celery\backends\asynchronous.py", line 64, in wait_for
    wait(timeout=timeout)
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\celery\backends\redis.py", line 160, in drain_events
    message = self._pubsub.get_message(timeout=timeout)
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\redis\client.py", line 3617, in get_message
    response = self.parse_response(block=False, timeout=timeout)
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\redis\client.py", line 3505, in parse_response
    response = self._execute(conn, conn.read_response)
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\redis\client.py", line 3479, in _execute
    return command(*args, **kwargs)
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\redis\connection.py", line 739, in read_response
    response = self._parser.read_response()
  File "C:\Users\venugopal.venkatesh\.virtualenvs\fdt_report_gen-BnOKsvM9\lib\site-packages\redis\connection.py", line 331, in read_response
    raise InvalidResponse("Protocol Error: %r" % raw)
redis.exceptions.InvalidResponse: Protocol Error:

有没有关于如何解决这个错误的建议


Tags: inpyreportlibpackageslinesitevirtualenvs

热门问题