agc*_*nti 1 python django redis
我正在尝试使用django_rq将redis中的基本工作排入队列,这是一个用于排队作业的python库,并在后台与工作人员一起处理它们,但简单的调用抛出了:
AttributeError: 'dict' object has no attribute '__module__'
Run Code Online (Sandbox Code Playgroud)
if not isinstance(f, string_types) and f.__module__ == '__main__':
raise ValueError('Functions from the __main__ module cannot be processed '
'by workers.')
Run Code Online (Sandbox Code Playgroud)
我正在传递一个函数,f所以我不明白它是如何抛出一个属性错误的dict.关于什么是错误的任何想法?
堆栈跟踪:
File "/Users/admin/dev/feedme-web/feedme/api/views.py", line 133, in post
parameter_dict = {
File "/Users/admin/dev/feedme-web/feedme-env/lib/python2.7/site-packages/django_rq/queues.py", line 162, in enqueue
return get_queue().enqueue(func, *args, **kwargs)
File "/Users/admin/dev/feedme-web/feedme-env/lib/python2.7/site-packages/rq/queue.py", line 159, in enqueue
if not isinstance(f, string_types) and f.__module__ == '__main__':
Run Code Online (Sandbox Code Playgroud)
入队的职能:
def create_order_ordrin(user, card_primary_key, address_primary_key):
parameter_dict = {
"""... pararmeters for call here ..."""
}
ordrin = initialize_ordrin()
return ordrin.order_user(**parameter_dict)
Run Code Online (Sandbox Code Playgroud)
* 请注意,值user,card_primary_key和address_primary_key尚未使用
您正在调用该函数并将函数调用的结果传递给队列.
注册功能,无需调用它,包括参数传递时,它是被称为:
django_rq.enqueue(create_order_ordrin, foo, bar=baz)
Run Code Online (Sandbox Code Playgroud)
它将被称为create_order_ordrin(foo, bar=baz).