gpt4 book ai didi

python - Celery错误: "str object is not callable", getstate()函数是一个字符串

转载 作者:行者123 更新时间:2023-12-01 06:09:38 24 4
gpt4 key购买 nike

当我尝试将任务传递给 Celery 工作人员时,出现此错误。这是回溯

Traceback:
File "/home/vivek/xpython/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)

File "/home/vivek/projects/engine/engine/web/models.py" in fb_sync
53. process_metadata.delay(self, wrapper)

File "/home/vivek/xpython/lib/python2.6/site-packages/celery-2.2.7-py2.6.egg/celery/task/base.py" in delay
338. return self.apply_async(args, kwargs)

File "/home/vivek/xpython/lib/python2.6/site-packages/celery-2.2.7-py2.6.egg/celery/task/base.py" in apply_async
460. **options)

File "/home/vivek/xpython/lib/python2.6/site-packages/celery-2.2.7-py2.6.egg/celery/app/amqp.py" in delay_task
230. send(body, exchange=exchange, **extract_msg_options(kwargs))

File "/home/vivek/xpython/lib/python2.6/site-packages/kombu-1.1.6-py2.6.egg/kombu/compat.py" in send
101. return self.publish(*args, **kwargs)

File "/home/vivek/xpython/lib/python2.6/site-packages/kombu-1.1.6-py2.6.egg/kombu/messaging.py" in publish
124. compression, headers)

File "/home/vivek/xpython/lib/python2.6/site-packages/kombu-1.1.6-py2.6.egg/kombu/messaging.py" in _prepare
147. body) = encode(body, serializer=serializer)

File "/home/vivek/xpython/lib/python2.6/site-packages/kombu-1.1.6-py2.6.egg/kombu/serialization.py" in encode
119. payload = encoder(data)

File "/home/vivek/xpython/lib/python2.6/copy_reg.py" in _reduce_ex
84. dict = getstate()



Exception Type: TypeError at /login/
Exception Value: 'str' object is not callable

/home/vivek/xpython/lib/python2.6/copy_reg.py in _reduce_ex
dict = getstate() ...

local variables
{'args': (<web.models.User object at 0x8b47b4c>,<web.fb.Facebook object at 0x8b4fbac>),
'eta': None,
'expires': None,
'id': '8d8e6c0b-a269-4780-9c48-77e689037322',
'kwargs': {},
'retries': 0,
'task': 'web.models.process_likes'}


What is the solution to this problem? When I remove the task decorator, it works fine.

最佳答案

您正尝试将对象传递给无法序列化的任务。尝试传递更简单的数据(让您在任务运行时重新创建复杂对象的信息)。

不确定这是否是错误的实际原因,但无论如何您都不应该将 Django 模型传递给任务。否则你会遇到竞争条件。请参阅Celery documentation关于主题:

They shouldn’t be passed on as arguments to tasks. It’s almost always better to re-fetch the object from the database when the task is running instead, as using old data may lead to race conditions.

将用户对象的唯一 key 以及识别 Facebook Like 交互所需的任何内容传递为简单的 Python 类型,并使用任务中的该信息来重新创建执行该任务所需的内容。

关于python - Celery错误: "str object is not callable", getstate()函数是一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6558143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com