更新:我发现我什至不能通过一个类enqueue
,这可能吗?
我想传递一个item
对象(Django中的一个模型)作为参数queue.enqueue(grabber.parse_body, item)
,但是rqworker
会引发这个异常(一旦我尝试将项目作为参数传递,不管我是否使用它):
文件“/usr/local/lib/python3.4/dist-packages/rq/job.py”,第 53 行,在 unpickle 中引发 UnpickleError('Could not unpickle.', pickled_string, e) rq.exceptions.UnpickleError: ( 'Could not unpickle.', ImproperlyConfigured('请求设置 INSTALLED_APPS,但设置未配置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。',))
好像parse_body
不知道item
是什么?
我知道我可以将项目的 id 作为参数传递,然后处理 id in parse_body
,但这可以item
直接使用 inparse_body
吗?
我的主要代码:(enqueue.py
并且grabber.py
是独立脚本,不在 Django 应用程序中。)
入队.py
import os
import grabber
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "website.settings.development")
queue = django_rq.get_queue('default')
need_to_parse = Post.objects.all()
for item in need_to_parse:
queue.enqueue(grabber.parse_body, item)
抓取器.py
def parse_body(item):
print(item)