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

agc*_*nti 1 python django redis

我正在尝试使用django_rq将redis中的基本工作排入队列,这是一个用于排队作业的python库,并在后台与工作人员一起处理它们,但简单的调用抛出了:

AttributeError: 'dict' object has no attribute '__module__' 
Run Code Online (Sandbox Code Playgroud)

我已经将问题追溯到rq库中的这一:

 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尚未使用

Mar*_*ers 6

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

注册功能,无需调用它,包括参数传递时,它被称为:

django_rq.enqueue(create_order_ordrin, foo, bar=baz)
Run Code Online (Sandbox Code Playgroud)

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