Python 3.x Redis命令来测试芹菜的工作

Python 3.x Redis命令来测试芹菜的工作,python-3.x,redis,celery,Python 3.x,Redis,Celery,我正在试验一个芹菜工人使用Redis作为经纪人 这是我对芹菜工人的测试代码: from celery import Celery app = Celery('tasks', broker='redis://xxxxx.net:6379/0') @app.task def nextexec(payload): print(payload) 使用redis cli,我运行以下命令将值插入celery队列(由celery自动创建) 但是,当执行查询时,我的工作程序系统性地崩溃,我得到一个不

我正在试验一个芹菜工人使用Redis作为经纪人

这是我对芹菜工人的测试代码:

from celery import Celery
app = Celery('tasks', broker='redis://xxxxx.net:6379/0')

@app.task
def nextexec(payload):
    print(payload)
使用
redis cli
,我运行以下命令将值插入
celery
队列(由celery自动创建)

但是,当执行查询时,我的工作程序系统性地崩溃,我得到一个
不可恢复的错误:JSONDecodeError
。它似乎接收到
None
,而不是假定要解码的JSON字符串

知道我需要执行什么Redis查询,或者需要对这个(但很简单的)工作脚本进行什么更改吗?

芹菜用来在客户端和工作脚本之间传输数据。每个消息都需要序列化,并且都有一个content_类型的头,该头描述了用于对其进行编码的序列化方法

下面是使用json序列化的示例消息

{'body': 'W1sxXSwge30sIHsiY2FsbGJhY2tzIjogbnVsbCwgImVycmJhY2tzIjogbnVsbCwgImNoYWluIjogbnVsbCwgImNob3JkIjogbnVsbH1d',
 'content-encoding': 'utf-8',
 'content-type': 'application/json',
 'headers': {'argsrepr': '(1,)',
  'eta': None,
  'expires': None,
  'group': None,
  'id': '5ce9a8d8-41d7-47a4-9074-beedabd88dcc',
  'kwargsrepr': '{}',
  'lang': 'py',
  'origin': 'gen5339@pavilion',
  'parent_id': None,
  'retries': 0,
  'root_id': '5ce9a8d8-41d7-47a4-9074-beedabd88dcc',
  'task': 't.wait',
  'timelimit': [None, None]},
 'properties': {'body_encoding': 'base64',
  'correlation_id': '5ce9a8d8-41d7-47a4-9074-beedabd88dcc',
  'delivery_info': {'exchange': '', 'routing_key': 'celery'},
  'delivery_mode': 2,
  'delivery_tag': '0177eb65-344e-4b1c-ab5f-8e2f5d75b8d3',
  'priority': 0,
  'reply_to': 'a5c611b8-18b3-3bbb-b598-c3757f06c4fd'}}
芹菜工人需要接收指定格式的消息。您不能向代理(redis)推送一些值,并期望芹菜来执行它

使用python对任务进行排队

from mymodule import nextexec
payload ='some payload'
nextexec.delay(payload)
芹菜用来在客户和员工之间传输数据。每个消息都需要序列化,并且都有一个content_类型的头,该头描述了用于对其进行编码的序列化方法

下面是使用json序列化的示例消息

{'body': 'W1sxXSwge30sIHsiY2FsbGJhY2tzIjogbnVsbCwgImVycmJhY2tzIjogbnVsbCwgImNoYWluIjogbnVsbCwgImNob3JkIjogbnVsbH1d',
 'content-encoding': 'utf-8',
 'content-type': 'application/json',
 'headers': {'argsrepr': '(1,)',
  'eta': None,
  'expires': None,
  'group': None,
  'id': '5ce9a8d8-41d7-47a4-9074-beedabd88dcc',
  'kwargsrepr': '{}',
  'lang': 'py',
  'origin': 'gen5339@pavilion',
  'parent_id': None,
  'retries': 0,
  'root_id': '5ce9a8d8-41d7-47a4-9074-beedabd88dcc',
  'task': 't.wait',
  'timelimit': [None, None]},
 'properties': {'body_encoding': 'base64',
  'correlation_id': '5ce9a8d8-41d7-47a4-9074-beedabd88dcc',
  'delivery_info': {'exchange': '', 'routing_key': 'celery'},
  'delivery_mode': 2,
  'delivery_tag': '0177eb65-344e-4b1c-ab5f-8e2f5d75b8d3',
  'priority': 0,
  'reply_to': 'a5c611b8-18b3-3bbb-b598-c3757f06c4fd'}}
芹菜工人需要接收指定格式的消息。您不能向代理(redis)推送一些值,并期望芹菜来执行它

使用python对任务进行排队

from mymodule import nextexec
payload ='some payload'
nextexec.delay(payload)

谢谢你的回答,这是我一直在寻找的信息,从芹菜文档和教程中看不清楚。谢谢你的回答,这是我一直在寻找的信息,从芹菜文档和教程中看不清楚。