Python RQ AttributeError:'dict'对象没有属性'__module__'

时间:2014-03-12 17:11:15

标签: python django redis

我试图使用django_rq在redis中排队基本工作,line是一个用于排队作业并在后台处理工作的python库,但简单的调用会抛出:

AttributeError: 'dict' object has no attribute '__module__' 

我已将此问题追溯到rq库中的{{3}}:

 if not isinstance(f, string_types) and f.__module__ == '__main__':
            raise ValueError('Functions from the __main__ module cannot be processed '
                             'by workers.')

我在[{1}}中传递了一个函数,所以我不明白它如何在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__':

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) 注意值user,card_primary_key和address_primary_key尚未使用

1 个答案:

答案 0 :(得分:6)

您正在调用该函数并将函数调用的结果传递给队列。

注册函数而不调用它,并包含要在 被调用时传递的参数:

django_rq.enqueue(create_order_ordrin, foo, bar=baz)

,它将被称为create_order_ordrin(foo, bar=baz)