6
我得到下面的錯誤,錯誤只發生在我添加delay
到process_upload
函數,否則它工作沒有問題。不能泡菜:屬性查找內置函數失敗
有人可以解釋這個錯誤是什麼,爲什麼發生這種情況以及解決任何建議?
錯誤:
PicklingError at /contacts/upload/configurator/47/
Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
這是視圖
if request.method == 'POST':
form = ConfiguratorForm(data=request.POST)
# Send import to task.
process_upload.delay(upload_id=upload.id, form=form)
這是任務
@task
def process_upload(upload_id, form):
upload = Upload.objects.get(id=upload_id)
upload.process(form=form)
個Upload.process是我的模型中:
def process(self, form):
self.date_start_processing = timezone.now()
import_this(data=self.filepath, extra_fields=[
{'value': self.group_id, 'position': 5},
{'value': self.uploaded_by.id, 'position': 6}], form=form)
完整跟蹤:
Traceback:
File "/Users/user/Documents/workspace/sms/django-env/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/Users/user/Documents/workspace/sms/django-env/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
25. return view_func(request, *args, **kwargs)
File "/Users/user/Documents/workspace/sms/contacts/views.py" in upload_configurator
118. process_upload.delay(upload_id=upload.id, form=form)
File "/Users/user/Documents/workspace/sms/django-env/lib/python2.7/site-packages/celery/app/task.py" in delay
357. return self.apply_async(args, kwargs)
File "/Users/user/Documents/workspace/sms/django-env/lib/python2.7/site-packages/celery/app/task.py" in apply_async
472. **options)
File "/Users/user/Documents/workspace/sms/django-env/lib/python2.7/site-packages/celery/app/amqp.py" in publish_task
249. **kwargs
File "/Users/user/Documents/workspace/sms/django-env/lib/python2.7/site-packages/kombu/messaging.py" in publish
157. compression, headers)
File "/Users/user/Documents/workspace/sms/django-env/lib/python2.7/site-packages/kombu/messaging.py" in _prepare
233. body) = encode(body, serializer=serializer)
File "/Users/user/Documents/workspace/sms/django-env/lib/python2.7/site-packages/kombu/serialization.py" in encode
161. payload = encoder(data)
File "/Users/user/Documents/workspace/sms/django-env/lib/python2.7/site-packages/kombu/serialization.py" in dumps
340. return dumper(obj, protocol=pickle_protocol)
Exception Type: PicklingError at /contacts/upload/configurator/47/
Exception Value: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
forms.py
COL_CHOICES = [
('N/A', 'No Import'),
('first_name', 'First Name'),
('last_name', 'Last Name'),
('company', 'Company'),
('mobile', 'Mobile Number'),
('email', 'Email Address'),
]
class ConfiguratorForm(forms.Form):
col1 = forms.TypedChoiceField(choices=COL_CHOICES, initial='first_name')
col2 = forms.TypedChoiceField(choices=COL_CHOICES, initial='first_name')
col3 = forms.TypedChoiceField(choices=COL_CHOICES, initial='first_name')
col4 = forms.TypedChoiceField(choices=COL_CHOICES, initial='first_name')
不是100%確定你的意思,我想我有一些閱讀要做。我曾嘗試清除數據,但是這只是給我一個錯誤'str'對象沒有屬性'值'。 – Prometheus
用表單更新問題。 – Prometheus
@Spike:如果你沒有指定你如何做「嘗試清理數據」,也不知道你試圖清理什麼數據,也不要發佈回溯(提示:回溯是你的朋友,通常不只是讀回溯足以知道 - 或者至少做出有教育的猜測 - 出了什麼問題)。這也是一個不同的問題,所以我們不要在這裏嘗試解決它。 wrt /「pickable」你可以閱讀Pickle包的(Python)文檔。 –