Toto

Software screenshot:
Toto
Rincian Software:
Versi: 0.12.0
Tanggal Upload: 20 Feb 15
Pengembang: JeremyOT
Lisensi: Gratis
Popularitas: 5

Rating: 4.0/5 (Total Votes: 1)

Toto adalah kerangka kecil dimaksudkan untuk mempercepat pengembangan Server API. Hal ini dibangun di atas Tornado dan saat ini dapat menggunakan salah MySQL atau MongoDB sebagai database dukungan.
Instalasi
Cara paling mudah untuk menginstal Toto adalah dengan pip. Cukup jalankan pip install git -e + git: //github.com/JeremyOT/Toto.git#egg=Toto untuk menginstal versi terbaru dari modul Toto pada mesin Anda.
Penggunaan
Memulai dengan Toto mudah, semua yang perlu Anda lakukan adalah membuat contoh baru dari toto.TotoServer dan memanggil run (). Toto membutuhkan modul akar digunakan untuk metode pencarian. Secara default, TotoServer akan mencari modul yang disebut metode. Parameter method_module dapat digunakan untuk menentukan modul lain dengan nama.
Konfigurasi
Secara default, Toto dikonfigurasi untuk berjalan pada port 8888 dan terhubung ke server MongoDB berjalan pada localhost. Konfigurasi dapat dilakukan dalam tiga cara dengan masing-masing override terakhir:
1. Dengan pilihan lewat sebagai parameter bernama ke konstruktor TotoServer.
2. Melalui file konfigurasi dengan melewati jalan ke file konfigurasi sebagai parameter pertama konstruktor TotoServer.
3. Dengan parameter baris perintah (--option = 'String value' --option = 1234)
Menggabungkan metode konfigurasi dapat berguna saat debugging. Jalankan script dengan help untuk melihat daftar lengkap parameter yang tersedia.
Metode
Metode yang direferensikan oleh nama di setiap permintaan. a.b.c (atau a / b / c) peta ke methods.a.b.c. Untuk menambahkan metode baru, menambahkan modul dan paket dengan metode (atau ditentukan) paket (lihat paket akun untuk referensi) dan memastikan bahwa setiap modul callable mendefinisikan memanggil (handler, parameter) di mana handler adalah TotoHandler (subclass dari tornado.web. RequestHandler) menangani permintaan saat ini.
handler.connection.db menyediakan akses langsung ke database yang digunakan oleh sesi dan rekening kerangka.
handler.session menyediakan akses ke sesi saat ini atau jika tidak ada dikonfirmasi. Properti yang tersedia:
- Session.user_id - ID pengguna saat
- Session.expires - cap waktu unix saat sesi akan berakhir
- Session.session_id - ID sesi saat ini
- Session.state - dict python yang berisi kondisi saat ini, Anda harus menghubungi session.save_state () untuk bertahan perubahan
Untuk menegakkan otentikasi untuk metode apapun, menghiasi Invoke () fungsi dengan @ toto.invocation.authenticated. Upaya tidak sah untuk memanggil metode dikonfirmasi akan kembali kesalahan tidak berwenang.
Parameter yang dibutuhkan dapat ditentukan dengan dekorasi yang Invoke () fungsi dengan @ toto.invocation.requires (param1, param2, ...).
Modul metode dapat memanfaatkan fitur non-blocking Tornado oleh dekorasi yang Invoke () fungsi dengan @ toto.invocation.asynchronous. Ketika operasi asynchronous selesai Anda harus memanggil handler.finish () untuk menyelesaikan permintaan. Data dapat dikirim ke klien dengan handler.write () dan handler.flush (). Opsional, modul dapat mengimplementasikan on_connection_close () untuk membersihkan sumber daya jika klien menutup koneksi. Lihat RequestHandler.on_connection_close () dalam dokumentasi Tornado untuk informasi lebih lanjut.
Penting untuk diingat bahwa Tornado mensyaratkan bahwa semua panggilan untuk menulis (), flush () dan finish () dilakukan pada thread utama. Anda dapat menjadwalkan fungsi untuk berjalan di thread utama dengan IOLoop.instance (). Add_callback (callback).
Catatan: Setiap data kembali dari panggilan untuk method.invoke () akan dikirim ke klien sebagai JSON data dan digunakan untuk menghasilkan header x-toto hmac untuk verifikasi. Hal ini dapat menyebabkan masalah dengan metode asynchronous. Jika method.invoke () mengembalikan None, respon akan secara otomatis dikirimkan ke klien dan tidak ada sundulan x-toto-hmac akan dihasilkan.
Permintaan
Metode non-dikonfirmasi:
Layanan 1. Panggilan dengan JSON objek dalam bentuk: {"Metode": "abc", "parameter": }. Alih-alih melewati "metode" argumen dalam tubuh permintaan, juga memungkinkan untuk memanggil metode dengan URL. URL setara dengan panggilan atas adalah http://service.com/service/a/b/c.
2. Parse respon JSON.
Pembuatan Account:
Metode account.create 1. Panggilan dengan {"user_id": , "password": }.
2. Pastikan bahwa base64 dikodekan HMAC-SHA1 dari respon tubuh dengan sebagai kunci cocok header x-toto-hmac di respon.
3. Parse respon JSON.
4. Baca dan toko session_id dari objek respon.
Masuk:
Metode account.login 1. Panggilan dengan {"user_id": , "password": }.
2. Pastikan bahwa base64 dikodekan HMAC-SHA1 dari respon tubuh dengan sebagai kunci cocok header x-toto-hmac di respon.
3. Parse respon JSON.
4. Baca dan toko session_id dari objek respon.
Metode Dikonfirmasi:
1. Login (lihat-atas).
Layanan 2. Panggilan dengan JSON objek dalam bentuk: {"Metode": "abc", "parameter": } dengan sundulan x-toto-sesi-id set ke ID sesi kembali dari login dan x- yang toto-hmac sundulan set ke base64 dikodekan HMAC-SHA1 dihasilkan dengan sebagai kunci dan permintaan tali JSON sebagai pesan.
3. Pastikan bahwa base64 dikodekan HMAC-SHA1 dari respon tubuh dengan sebagai kunci cocok header x-toto-hmac di respon.
4. Parse respon JSON.
Catatan: Petunjuk ini mengasumsikan bahwa method.invoke () mengembalikan sebuah obyek yang akan serial dan dikirim ke klien. Metode yang kembali Tidak bisa digunakan mengirim data apapun dan harus ditangani sesuai.
Agenda
Kadang-kadang Anda mungkin perlu mengirim peristiwa dari satu permintaan yang lain. Toto toto.events.EventManager membuat ini mudah.
Untuk mengirim penggunaan event EventManager.instance (). Mengirim ('EventName', args). EventManager menggunakan modul cPickle python untuk serialisasi sehingga Anda dapat melewati apapun cPickle dapat menangani sebagai args.
Untuk menerima suatu acara, Anda harus mendaftarkan penangan dengan EventManager.instance (). Register_handler ('EventName', handler). handler adalah fungsi yang mengambil satu parameter dan akan disebut dengan args ketika EventManager mengirimkan sebuah acara dengan 'EventName'. Peristiwa Toto yang terutama dirancang untuk digabungkan dengan dukungan tornado untuk permintaan non-blocking. Lihat "chatting" template untuk contoh.
Sistem acara Toto mendukung pengiriman peristiwa di beberapa contoh baik pada mesin yang sama dan dalam sistem terdistribusi. Menjalankan server Anda dengan help untuk pilihan konfigurasi yang lebih
Daemonization
The Toto server dapat dijalankan sebagai daemon dengan melewati argumen --daemon = start. Untuk menghentikan proses yang berjalan melewati --daemon = berhenti. Hal ini akan menghentikan proses yang berbagi format file pid tertentu (toto.pid default). Para --processes = Pilihan dapat digunakan untuk menentukan jumlah kasus server untuk menjalankan. Beberapa contoh akan dijalankan pada port berurutan mulai dari port tertentu oleh --port. Jika 0 digunakan sebagai argumen untuk --processes, Toto akan menjalankan satu proses per cpu yang terdeteksi oleh modul multiprocessing Python. Pilihan daemonization tambahan dapat dilihat dari --help.
Klien
Untuk membantu Anda memulai, JavaScript dan iOS perpustakaan klien dalam pembangunan di https://github.com/JeremyOT/TotoClient-JS dan https://github.com/JeremyOT/TotoClient-iOS masing-masing.

Fitur :

  • Menggunakan JSON untuk konsumsi mudah oleh klien pada platform apapun
  • Mudah untuk menambahkan metode baru
  • otentikasi sederhana dibangun dengan verifikasi HMAC-SHA1 untuk permintaan dikonfirmasi
  • ketekunan Sesi negara untuk permintaan dikonfirmasi
  • Sesi disimpan dalam database untuk menyederhanakan skala di server

Persyaratan :

  • Python

Komentar untuk Toto

Komentar tidak ditemukan
Tambahkan komentar
Aktifkan gambar!