2010-07-13 33 views
6

Mặc dù câu hỏi này rất phổ biến ở đây trong StackOverflow, sau khi dành thời gian ở đây và trong Google, tôi vẫn chưa tìm được câu trả lời cụ thể về cách thức phù hợp nhất để thực hiện SOAP trong Python 3.SOAP Client cho Python 3

Tôi đã xem Does a Python 3 SOAP client module exist? và tôi hy vọng nó đã lỗi thời và hôm nay một số giải pháp cho điều này có thể đã xuất hiện.

Tôi đã suy nghĩ về một số ý tưởng:

  1. Sử dụng kịch bản 2to3 đến cổng một số thư viện hiện có để Python 3 (xà phòng, bọt, vv).
  2. tải một module bên ngoài, bằng cách trộn các công nghệ (Py3k + Jython, Py3k + Python 2.6, vv)
  3. Viết trong lớp học Python hardcode tương ứng với định nghĩa các tập tin WSDL (trong đó hàm ý trong chặt khớp nối/bảo trì cao) .
  4. Viết phần mềm bằng Python 3.0, gọi hàm mô-đun "python2.6-only" thông qua execnet package. Yêu cầu Python 2.6 phải được cài đặt trên máy và phần mềm được viết bằng Python3.0 là nhị phân đông lạnh.

Bất kỳ ý tưởng nào?

Cảm ơn trước

Trả lời

1

Tôi có thể bắt đầu bằng cách thử cổng 2to3 được đề xuất của bạn. Đối với nhiều thứ, nó hoạt động khá tốt. Nó vẫn sẽ là một hoặc hai ngày giá trị của công việc để chuyển đổi một cái gì đó như suds, tôi tưởng tượng.

+0

Tôi không tin rằng giải pháp này sẽ hoạt động, 2to3 được thiết kế để tạo ra các bản dịch đơn giản như bản in, ngoại lệ, nhập tuyệt đối, v.v. Nếu không, tôi đoán một khách hàng SOAPy cho py3k sẽ được phát hành. Bạn không đồng ý –

+0

@Eduardo: Tôi thì không. Tôi đã thấy một số mô-đun Python (bao gồm một số mô-đun khá phức tạp) đặc biệt nói rằng cơ chế chuyển đổi chính thức của chúng là đảm bảo 2to3 hoạt động tốt nhất có thể trên codebase của chúng. Bạn sẽ lưu ý tài liệu cho 2to3 (http://docs.python.org/library/2to3.html) nêu rõ "Thư viện chuẩn chứa tập hợp các bộ sửa lỗi phong phú sẽ xử lý hầu như tất cả các mã". –

+0

2to3 hoạt động khá tốt đối với nhiều codebases. Những nơi mà nó phá vỡ là nơi tác giả đã cố gắng để được quá thông minh và sử dụng kỳ lạ của các trường hợp cạnh. Nếu mã được viết theo kiểu đơn giản, nhiệt đới, 2to3 thường làm một phần lớn công việc. –