值错误:未知类型<类'redis.client.StrictPipeline'>

2024-04-25 17:25:55 发布

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

enter image description here

我在win10上本地开发,这对于RQ任务队列的使用是个问题,RQ任务队列只在linux系统上工作,因为它需要分叉进程的能力。我正在尝试扩展flaskbase项目https://github.com/hack4impact/flask-base/tree/master/app,它可以使用RQ。我遇到了https://github.com/michaelbrooks/rq-win。我喜欢这个回购的想法(如果我能让它工作,它将真正简化我的生活,因为我是在win 10-64上开发的):

安装此库后

我可以通过运行以下命令在视图中对作业进行排队:

     @login_required
     @main.route('/selected')
     def selected():
     messages = 'abcde'
      j = get_queue().enqueue(render_png, messages, result_ttl=5000)
      return j.get_id()

这将正确返回作业代码。在

我改了密码管理.py收件人:

^{pr2}$

当我尝试运行它时:

$ python -u manage.py run_worker 


09:40:44
09:40:44 *** Listening on ?[32mdefault?[39;49;00m...
09:40:58 ?[32mdefault?[39;49;00m: ?[34mapp.main.views.render_png('{"abcde"}')?[39;49;00m (8c1b6186-39a5-4daf-9c45-f60e4241cd1f)
...\lib\site-packages\rq\job.py:161: DeprecationWarning: job.status is deprecated. Use job.set_status() instead
  DeprecationWarning
09:40:58 ?[31mValueError: Unknown type <class 'redis.client.StrictPipeline'>?[39;49;00m
Traceback (most recent call last):
  File "...\lib\site-packages\rq_win\worker.py", line 87, in perform_job
    queue.enqueue_dependents(job, pipeline=pipeline)
  File "...\lib\site-packages\rq\queue.py", line 322, in enqueue_dependents
    for job_id in pipe.smembers(dependents_key)]
  File "...\lib\site-packages\rq\queue.py", line 322, in <listcomp>
    for job_id in pipe.smembers(dependents_key)]
  File "...\lib\site-packages\rq\compat\__init__.py", line 62, in as_text
    raise ValueError('Unknown type %r' % type(v))
ValueError: Unknown type <class 'redis.client.StrictPipeline'>

总而言之,我认为作业在redis中被正确地排队。但是,当工作进程试图从队列中获取作业进行处理时,会发生此错误。我该怎么解决这个问题?在


Tags: inpy队列queuelibpackagestype作业
1条回答
网友
1楼 · 发布于 2024-04-25 17:25:55

因此,经过一番挖掘,错误的根源似乎是here,其中发送给as_text函数的job_id是一个StrictPipeline对象。但是,我无法在本地复制错误;您能发布更多代码吗?另外,我会尝试重新安装redis、rq和rqwin模块,并可能尝试导入rq.compat

相关问题 更多 >