Cách tốt nhất để tạo một dịch vụ web python đơn giản [đã đóng]


137

Tôi đã sử dụng python trong nhiều năm, nhưng tôi có ít kinh nghiệm về lập trình web python. Tôi muốn tạo một dịch vụ web rất đơn giản để lộ một số chức năng từ tập lệnh python hiện có để sử dụng trong công ty của tôi. Nó có thể sẽ trả về kết quả trong csv. Cách nhanh nhất để có được một cái gì đó là gì? Nếu nó ảnh hưởng đến đề xuất của bạn, tôi có thể sẽ thêm nhiều chức năng hơn cho vấn đề này.


Điều này cho thấy một mẫu nhanh đẹp: dreamyssoft.com/blog/blog.php?/archives/ triệt
Triton Man

github.com/pramttl/webipy Tôi đã viết công cụ này tự động chuyển đổi các hàm python của bạn thành các điểm cuối web. Nó có một số hạn chế về định nghĩa chức năng của bạn, nhưng cho đến nay là cách nhanh nhất để tạo điểm cuối web cho các chức năng python của bạn. Infact webipy sử dụng django, nhưng nó tự động tạo ra các lượt xem django cần thiết cho tất cả các chức năng python của bạn. Bạn không phải viết bất kỳ "mã web" nào.
Pranjal Găngal

Câu trả lời:


55

Có một cái nhìn tại werkzeug . Werkzeug bắt đầu như một bộ sưu tập đơn giản các tiện ích khác nhau cho các ứng dụng WSGI và đã trở thành một trong những mô-đun tiện ích WSGI tiên tiến nhất. Nó bao gồm một trình gỡ lỗi mạnh mẽ, các đối tượng yêu cầu và phản hồi đầy đủ tính năng, các tiện ích HTTP để xử lý các thẻ thực thể, tiêu đề kiểm soát bộ đệm, ngày HTTP, xử lý cookie, tải lên tệp, hệ thống định tuyến URL mạnh mẽ và một loạt các mô-đun bổ trợ cộng đồng.

Nó bao gồm rất nhiều công cụ tuyệt vời để làm việc với http và có lợi thế là bạn có thể sử dụng nó với wsgi trong các môi trường khác nhau (cgi, fcgi, apache / mod_wsgi hoặc với một máy chủ python đơn giản để gỡ lỗi).


2
Tôi đã kết thúc bằng cách sử dụng werkzeug cho việc này. Tôi yêu cách nó linh hoạt. Cảm ơn vì lời giới thiệu.
Jeremy Cantrell

1
Tôi đã thử khoảng ba khung web khác trước khi tôi có cái này. Đây là cái đầu tiên tôi có thể làm việc ra khỏi hộp. Tuyệt vời rec!
BenDundee

26

web.py có lẽ là khung web đơn giản nhất hiện có. CGI "Bare" thì đơn giản hơn, nhưng bạn hoàn toàn tự mình thực hiện một dịch vụ thực sự làm một việc gì đó.

"Chào thế giới!" theo web.py không dài hơn phiên bản CGI đơn giản, nhưng nó thêm ánh xạ URL, phân biệt lệnh HTTP và phân tích tham số truy vấn miễn phí :

import web

urls = (
    '/(.*)', 'hello'
)
app = web.application(urls, globals())

class hello:        
    def GET(self, name):
        if not name: 
            name = 'world'
        return 'Hello, ' + name + '!'

if __name__ == "__main__":
    app.run()

À đúng rồi, web.py có vẻ rất tuyệt. Đến bây giờ, trang web < webpy.org > nói: 500 - Lỗi máy chủ nội bộ Nếu không, mã của chúng tôi không hoạt động với tôi: ... app = web.application (url, globalals ()) AttributionError: 'module' object không có thuộc tính 'ứng dụng'
bortzmeyer

1
Các trang web đã trở lại. Bạn có thể muốn kiểm tra phiên bản của mình, vì mã của Tim có vẻ đúng.
Charlie Martin

1
Tôi cũng chạy vào đây. Nếu bạn đang chạy Ubuntu, phiên bản xuất xưởng trong kho 8.10 khá lỗi thời. Lấy cái mới nhất từ ​​trang web hoặc sử dụng easy_install và bạn sẽ là vàng.
bouvard

theo webpy.org (trang web chính thức của web.py) yandex đang sử dụng web.py (họ có 70 triệu lượt xem trang / ngày) .. vì vậy nó phải hiệu quả ..
lập trình viên

Đây chính xác là những gì tôi cần. Đơn giản, đi thẳng vào vấn đề và dễ sử dụng.
GuiSim

15

Cách đơn giản nhất để tải tập lệnh Python trực tuyến là sử dụng CGI:

#!/usr/bin/python

print "Content-type: text/html"
print

print "<p>Hello world.</p>"

Đặt mã đó vào một tập lệnh nằm trong thư mục CGI của máy chủ web của bạn, làm cho nó có thể thực thi được và chạy nó. Các cgimô-đun có một số tiện ích hữu ích khi bạn cần phải chấp nhận các thông số từ người dùng.


Khi thực hiện phương pháp này, đảm bảo trình xử lý được thiết lập phù hợp cho các tập lệnh python trong Apache, ví dụ: AddHandler cgi-script .cgi .pl .py
Tegan Snyder

1
Vấn đề là chạy ứng dụng mà không cần bất kỳ máy chủ web bổ sung nào như apache.
AstraSerg

12

CGI thô là một nỗi đau, Django là loại nặng. Có một số khung đơn giản hơn, nhẹ hơn về, ví dụ CherryPy . Thật đáng để nhìn xung quanh một chút.


2
+1 cho CherryPy. Thật hoàn hảo khi bạn muốn thứ gì đó đơn giản hơn Django.
Steve Losh

9

Nhìn vào việc thực hiện tham chiếu WSGI . Bạn đã có nó trong thư viện Python của bạn. Nó khá đơn giản.


Như tôi đã nói, trải nghiệm lập trình web python của tôi khá hạn chế, nhưng một ứng dụng WSGI có thể chạy "độc lập", không có máy chủ web như apache, phải không?
Jeremy Cantrell

Đúng. Hoàn toàn độc lập. Công trình tuyệt vời. Tuy nhiên, bạn không thể sử dụng cổng 80 mà không có đặc quyền của Apache hoặc đặc biệt - nhưng đó là vấn đề bảo mật của hệ điều hành.
S.Lott

4

Nếu bạn có ý nghĩa với "Dịch vụ web" thì một cái gì đó được truy cập bởi các Chương trình khác SimpleXMLRPCServer có thể phù hợp với bạn. Nó được bao gồm trong mọi cài đặt Python kể từ Phiên bản 2.2.

Đối với những thứ đơn giản có thể truy cập của con người, tôi thường sử dụng Pythons SimpleHTTPServer , cũng đi kèm với mọi cài đặt. Rõ ràng bạn cũng có thể truy cập SimpleHTTPServer bằng các chương trình máy khách.


2

Cuộc sống thật đơn giản nếu bạn có được một khung web tốt. Dịch vụ web ở Django rất dễ dàng. Xác định mô hình của bạn, viết các hàm xem trả về các tài liệu CSV của bạn. Bỏ qua các mẫu.


2

Nếu bạn có nghĩa là "dịch vụ web" theo nghĩa SOAP / WSDL, bạn có thể muốn xem xét Tạo WSDL bằng Python và SOAPpy


Tôi chỉ có nghĩa là "dịch vụ web" theo nghĩa không chính thức nhất. Cung cấp dữ liệu qua http sẽ được sử dụng bởi một số ứng dụng khác. Như tôi đã nói trong câu hỏi, nó có thể sẽ là csv.
Jeremy Cantrell

WSDL có lẽ là tiêu chuẩn nhất dựa trên ... và điều đó sẽ được tiêu thụ ...
Thufir

1

có thể Twisted http://twistedmatrix.com/trac/


Tôi không có bất cứ điều gì chống lại Twisted, nhưng đây chính xác là những gì tôi muốn tránh xa (phụ thuộc nặng nề).
Jeremy Cantrell

@Jeremy: Twisted không nặng.
nosklo

Tôi đồng ý rằng nó có thể hơi nản chí từ cái nhìn đầu tiên, nhưng tôi không chắc ý của bạn là 'phụ thuộc nặng nề'. Nó sử dụng các gói từ python tiêu chuẩn theo như tôi biết. Có rất nhiều bộ phận chuyển động bên trong mô-đun nhưng đối với những điều đơn giản, bạn không cần phải làm nhiều như vậy.
mợi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.