我正在尝试使用 python-rq 在 redis 中排队一项基本作业,但它会抛出此错误
“ValueError:函数来自main模块无法被工作人员处理”
这是我的程序:
import requests
def count_words_at_url(url):
resp = requests.get(url)
return len(resp.text.split())
from rq import Connection, Queue
from redis import Redis
redis_conn = Redis()
q = Queue(connection=redis_conn)
job = q.enqueue(count_words_at_url, 'http://nvie.com')
print job
将提供的代码分解为两个文件:count_words.py:
import requests
def count_words_at_url(url):
resp = requests.get(url)
return len(resp.text.split())
and main.py(您将在其中导入所需的函数):
from rq import Connection, Queue
from redis import Redis
from count_words import count_words_at_url # added import!
redis_conn = Redis()
q = Queue(connection=redis_conn)
job = q.enqueue(count_words_at_url, 'http://nvie.com')
print job
我总是将任务与运行这些任务的逻辑分离到不同的文件中。这只是更好的组织。另请注意,您可以定义一类任务并从该类导入/安排任务,而不是我上面建议的(过于简化的)结构。这应该会让你继续前进..
另请参阅here https://github.com/nvie/rq/issues/235确认您不是第一个遇到此示例的人。RQ 很棒一旦你掌握了它的窍门。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)