尝试使用 Redis rq

问题描述

我正在尝试让 Redis 和 rq 正常工作。

这是我的主要代码

从 rq 导入队列 从 redis 导入 Redis 从 util 导入 count_words_at_url 从 rq.registry 导入 FailedJobRegistry,作业 导入时间

if name == 'ma​​in':

print('Hi')


# Tell RQ what Redis connection to use
redis_conn = Redis()
q = Queue(connection=redis_conn)  # no args implies the default queue

# Delay execution of count_words_at_url('http://nvie.com')
job = q.enqueue(count_words_at_url,'http://nvie.com')
registry = FailedJobRegistry(queue=q)

# Show all Failed job IDs and the exceptions they caused during runtime
for job_id in registry.get_job_ids():
    job = Job.fetch(job_id,connection=redis_conn)
    print(job_id,job.exc_info)

print(job.result)

# Now,wait a while,until the worker is finished
time.sleep(20)
print(job.result)

我的后台任务是:

导入请求

def count_words_at_url(url): resp = requests.get(url) 返回 len(resp.text.split())

我在控制台得到这个输出

Hi
a6d5bb76-7bc9-46e4-b6ba-c1f3e3305da8 Traceback (most recent call last):
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",line 970,in perform_job
    self.prepare_job_execution(job,heartbeat_ttl)
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",line 867,in prepare_job_execution
    self.procline(msg.format(job.func_name,job.origin,time.time()))
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/job.py",line 247,in func_name
    self._deserialize_data()
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/job.py",line 215,in _deserialize_data
    self._func_name,self._instance,self._args,self._kwargs = self.serializer.loads(self.data)
ValueError: unsupported pickle protocol: 5
984f6808-0b79-4d64-9bab-a6615ae88eaa Traceback (most recent call last):
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",self._kwargs = self.serializer.loads(self.data)
ValueError: unsupported pickle protocol: 5
02b3ab72-90a9-4366-a160-14cedc9bad68 Traceback (most recent call last):
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",self._kwargs = self.serializer.loads(self.data)
ValueError: unsupported pickle protocol: 5
5978089c-d244-4049-b11d-0c3af85c1865 Traceback (most recent call last):
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",self._kwargs = self.serializer.loads(self.data)
ValueError: unsupported pickle protocol: 5
8484e4f5-9248-4022-b05b-b3342b1f7978 Traceback (most recent call last):
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",self._kwargs = self.serializer.loads(self.data)
ValueError: unsupported pickle protocol: 5
bdd57a11-f1df-4734-956d-254e81480d68 Traceback (most recent call last):
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",self._kwargs = self.serializer.loads(self.data)
ValueError: unsupported pickle protocol: 5
cf4eb163-bbd6-46f4-9d54-d34bb2ad9f51 Traceback (most recent call last):
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",self._kwargs = self.serializer.loads(self.data)
ValueError: unsupported pickle protocol: 5
ad168c8c-5757-4ef6-93e7-965494d7bf00 Traceback (most recent call last):
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",self._kwargs = self.serializer.loads(self.data)
ValueError: unsupported pickle protocol: 5
bcb07749-4839-40a7-ac46-760884cd37a7 Traceback (most recent call last):
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",self._kwargs = self.serializer.loads(self.data)
ValueError: unsupported pickle protocol: 5
043bfdb9-5b42-45ba-97c1-b1d8943797a6 Traceback (most recent call last):
  File "/Users/johnvergo/opt/anaconda3/lib/python3.7/site-packages/rq/worker.py",self._kwargs = self.serializer.loads(self.data)
ValueError: unsupported pickle protocol: 5

and after 20 seconds,this:
None

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)