Cara terbaik untuk membuat layanan web python sederhana [tutup]

137

Saya telah menggunakan python selama bertahun-tahun, tetapi saya memiliki sedikit pengalaman dengan pemrograman web python. Saya ingin membuat layanan web yang sangat sederhana yang memperlihatkan beberapa fungsi dari skrip python yang ada untuk digunakan dalam perusahaan saya. Ini kemungkinan akan mengembalikan hasil dalam csv. Apa cara tercepat untuk mendapatkan sesuatu? Jika itu memengaruhi saran Anda, saya kemungkinan akan menambahkan lebih banyak fungsi untuk ini, di masa mendatang.

Jeremy Cantrell
sumber
Ini menunjukkan contoh cepat yang bagus: dreamsyssoft.com/blog/blog.php?/archives/…
Rocky Pulley
github.com/pramttl/webipy Saya menulis alat ini yang secara otomatis mengubah fungsi python Anda menjadi titik akhir web. Ini memiliki beberapa batasan pada definisi fungsi Anda, tetapi sejauh ini merupakan cara tercepat untuk menghasilkan titik akhir web untuk fungsi python Anda. Infact webipy menggunakan django, tetapi secara otomatis menghasilkan tampilan django yang diperlukan untuk semua fungsi python Anda. Anda tidak perlu menulis "kode web".
Pranjal Mittal

Jawaban:

55

Coba lihat werkzeug . Werkzeug dimulai sebagai kumpulan sederhana dari berbagai utilitas untuk aplikasi WSGI dan telah menjadi salah satu modul utilitas WSGI yang paling canggih. Ini mencakup debugger yang kuat, objek permintaan dan respons berfitur lengkap, utilitas HTTP untuk menangani tag entitas, header kontrol cache, tanggal HTTP, penanganan cookie, unggahan file, sistem perutean URL yang kuat, dan sekelompok modul addon kontribusi komunitas.

Ini mencakup banyak alat keren untuk bekerja dengan http dan memiliki keuntungan bahwa Anda dapat menggunakannya dengan wsgi di lingkungan yang berbeda (cgi, fcgi, apache / mod_wsgi atau dengan server python sederhana untuk debugging).

Peter Hoffmann
sumber
2
Saya akhirnya menggunakan werkzeug untuk ini. Saya suka betapa fleksibelnya itu. Terima kasih atas rekomendasinya.
Jeremy Cantrell
1
Saya mencoba sekitar tiga kerangka web lain sebelum saya mendapatkan yang ini. Ini adalah hal pertama yang bisa saya lakukan di luar kotak. Rekaman bagus!
BenDundee
26

web.py mungkin adalah kerangka kerja web paling sederhana yang pernah ada. CGI "Bare" lebih sederhana, tetapi Anda benar-benar sendirian dalam membuat layanan yang benar-benar melakukan sesuatu.

"Halo Dunia!" menurut web.py tidak lebih dari versi CGI kosong, tetapi menambahkan pemetaan URL, perbedaan perintah HTTP, dan penguraian parameter kueri secara gratis :

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()
Tim Lesher
sumber
Ah ya, web.py sepertinya bagus. Saat ini, situs Web < webpy.org > mengatakan: 500 - Kesalahan Server Internal Jika tidak, kode kami tidak berfungsi untuk saya: ... app = web.application (url, globals ()) AttributeError: 'module' object tidak memiliki atribut 'application'
bortzmeyer
1
Situs web sudah kembali. Anda mungkin ingin memeriksa versi Anda, karena kode Tim sudah benar.
Charlie Martin
1
Aku juga mengalami ini. Jika Anda menjalankan Ubuntu, versi yang dikirimkan dalam repositori 8.10 sudah cukup lama. Ambil yang terbaru dari situs webnya atau gunakan easy_install dan Anda akan menjadi emas.
bouvard
menurut webpy.org (situs resmi web.py) yandex menggunakan web.py (mereka memiliki 70 juta tampilan halaman / hari) .. jadi harus efisien ..
programmer
Inilah yang saya butuhkan. Sederhana, langsung ke intinya dan mudah digunakan.
GuiSim
15

Cara termudah untuk mendapatkan skrip Python online adalah dengan menggunakan CGI:

#!/usr/bin/python

print "Content-type: text/html"
print

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

Letakkan kode itu dalam skrip yang ada di direktori CGI server web Anda, buat itu dapat dieksekusi, dan jalankan. The cgimodul memiliki sejumlah utilitas berguna ketika Anda perlu menerima parameter dari pengguna.

Greg Hewgill
sumber
Saat melakukan metode ini pastikan handler sudah diatur dengan tepat untuk skrip python di Apache, contoh: AddHandler cgi-script .cgi .pl .py
Tegan Snyder
1
Intinya adalah menjalankan aplikasi tanpa server web tambahan seperti apache.
AstraSerg
12

CGI mentah agak menyebalkan, Django jenis kelas berat. Ada sejumlah kerangka kerja yang lebih sederhana dan lebih ringan, misalnya CherryPy . Ada baiknya melihat-lihat sedikit.

Charlie Martin
sumber
2
1 untuk CherryPy. Ini sempurna ketika Anda menginginkan sesuatu yang lebih sederhana daripada Django.
Steve Losh
9

Lihatlah implementasi referensi WSGI . Anda sudah memilikinya di pustaka Python Anda. Cukup sederhana.

S. Lott
sumber
Seperti yang saya katakan, pengalaman saya dengan pemrograman web python cukup terbatas, tetapi aplikasi WSGI dapat dijalankan "mandiri", tanpa server web seperti apache, bukan?
Jeremy Cantrell
Iya. Benar-benar berdiri sendiri. Bekerja dengan baik. Namun, Anda tidak dapat menggunakan port 80 tanpa Apache atau hak istimewa khusus - tetapi itu adalah masalah keamanan OS.
S. Lotot
4

Jika yang Anda maksud dengan "Layanan Web", sesuatu yang diakses oleh Programms lain, SimpleXMLRPCServer mungkin tepat untuk Anda. Itu disertakan dengan setiap instalasi Python sejak Versi 2.2.

Untuk hal-hal sederhana yang dapat diakses manusia, saya biasanya menggunakan Pythons SimpleHTTPServer yang juga disertakan dengan setiap instalasi. Jelas Anda juga dapat mengakses SimpleHTTPServer dengan program klien.

maks
sumber
2

Hidup itu sederhana jika Anda mendapatkan kerangka kerja web yang bagus. Layanan web di Django itu mudah. Tentukan model Anda, tulis fungsi tampilan yang mengembalikan dokumen CSV Anda. Lewati template.

S. Lott
sumber
2

Jika yang Anda maksud adalah "layanan web" dalam pengertian SOAP / WSDL, Anda mungkin ingin melihatnya Menghasilkan WSDL menggunakan Python dan SOAPpy

che
sumber
Yang saya maksud adalah "layanan web" dalam arti yang paling informal. Memberikan data melalui http yang akan digunakan oleh beberapa aplikasi lain. Seperti yang saya katakan di pertanyaan, kemungkinan besar akan menjadi csv.
Jeremy Cantrell
WSDL mungkin akan menjadi yang paling berbasis standar ... dan itu akan untuk dikonsumsi ...
Thufir
1

mungkin Twisted http://twistedmatrix.com/trac/

mabbit
sumber
Saya tidak menentang Twisted, tetapi inilah yang sebenarnya ingin saya hindari (ketergantungan yang berat).
Jeremy Cantrell
@ Jeremy: Twisted tidak berat.
nosklo
Saya setuju ini bisa sedikit menakutkan pada pandangan pertama, tetapi saya tidak yakin apa yang Anda maksud dengan 'ketergantungan yang berat'. Ini menggunakan paket dari python standar sejauh yang saya tahu. Ada banyak bagian yang bergerak di dalam modul tetapi untuk hal-hal sederhana Anda tidak perlu melakukan banyak hal.
mabbit