Tôi nhận được lỗi bên dưới, lỗi chỉ xảy ra khi tôi thêm delay
vào chức năng process_upload
, nếu không nó hoạt động mà không có sự cố.Không thể chọn: tra cứu thuộc tính builtin.function không thành công
Ai đó có thể giải thích lỗi này là gì, tại sao nó xảy ra và bất kỳ đề xuất nào để giải quyết?
Lỗi:
PicklingError at /contacts/upload/configurator/47/
Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
Đây là quan điểm
if request.method == 'POST':
form = ConfiguratorForm(data=request.POST)
# Send import to task.
process_upload.delay(upload_id=upload.id, form=form)
Đây là nhiệm vụ
@task
def process_upload(upload_id, form):
upload = Upload.objects.get(id=upload_id)
upload.process(form=form)
Upload.process nằm trong mô hình của tôi:
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)
Full dấu vết:
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')
Không chắc chắn 100% ý bạn là gì, tôi nghĩ rằng tôi có một số đọc để làm. Tôi đã thử làm sạch các dữ liệu như đề nghị nhưng điều đó chỉ mang lại cho tôi một lỗi 'str' đối tượng không có thuộc tính 'giá trị'. – Prometheus
Cập nhật câu hỏi với biểu mẫu. – Prometheus
@Spike: nếu bạn không chỉ định cách bạn đã làm "thử làm sạch dữ liệu" cũng như dữ liệu bạn đã cố gắng xóa và không đăng lại dấu vết (gợi ý: tracebacks là bạn của bạn, thường xuyên hơn không chỉ đọc truy nguyên là đủ để biết - hoặc ít nhất là làm cho một giáo dục đoán về - những gì đã đi sai). Ngoài ra đây là một vấn đề khác nhau vì vậy chúng ta không cố gắng giải quyết nó ở đây. wrt/"có thể chọn", bạn có thể đọc tài liệu (Python) cho gói Pickle. –