Pengembangan Skrip / Skrip Pra-eksekusi
Ditambahkan pada versi 2.6.18
Meskipun DataFlux Func telah menyediakan alat PIP untuk memasang paket Python pihak ketiga, mungkin tidak dapat digunakan dengan normal karena kurangnya pustaka dependensi.
Jika pengguna perlu menggunakan OpenCV di DataFlux Func, selain memasang opencv-python, mereka juga perlu memasang pustaka dependensi melalui apt atau cara lainnya.
Jika tidak, masalah seperti berikut dapat terjadi:
1. Menggunakan Skrip Pra-eksekusi untuk Mengatasi Dependensi
Untuk mengatasi masalah ini, Anda dapat menyediakan Skrip pra-eksekusi kepada DataFlux Func; Skrip pra-eksekusi akan dijalankan sebelum DataFlux Func dimulai, sehingga dependensi yang diperlukan dapat dipasang.
Langkah-langkah spesifiknya adalah sebagai berikut:
1.1 Menyiapkan Skrip
Image DataFlux Func didasarkan pada Ubuntu:22.04.
Sebagai contoh untuk mengatasi masalah dependensi OpenCV di atas, Anda dapat menyiapkan Skrip Bash berikut.
| Memasang Dependensi OpenCV | |
|---|---|
1 2 | |
Simpan sebagai file prepare-for-opencv.sh.
Nama file bebas, tetapi harus diakhiri dengan .sh. Untuk menghindari masalah yang tidak perlu, jangan gunakan Unicode atau simbol tidak umum lainnya pada nama file
Membedakan Lingkungan Eksekusi
DataFlux Func terdiri dari sisi Server dan sisi Worker.
- Sisi Server terutama adalah server HTTP, menyediakan halaman Web dan API HTTP, dan tidak berpartisipasi dalam eksekusi kode Python.
- Sisi Worker adalah layanan yang benar-benar mengeksekusi kode Python.
Oleh karena itu, dalam sebagian besar kasus, Skrip pra-eksekusi hanya perlu dijalankan di Worker.
Jika perlu membedakan lingkungannya, Anda dapat membaca $1 untuk menentukan apakah nilainya server atau worker.
Layanan Beat, layanan MySQL, dan layanan Redis tidak menjalankan Skrip pra-eksekusi
Kode Bash referensi untuk membedakannya adalah sebagai berikut:
| Hanya Dijalankan di Kontainer Worker | |
|---|---|
1 2 3 | |
| Hanya Dijalankan di Kontainer Server | |
|---|---|
1 2 3 | |
1.2 Mengunggah Skrip
Direktori penyimpanan Skrip pra-eksekusi adalah sebagai berikut:
| Lingkungan | Lokasi |
|---|---|
| Di dalam kontainer | /data/resources/pre-run-scripts/ |
| Di host | {direktori-instalasi}/data/resources/pre-run-scripts/ |
Pengguna dapat menempatkan Skrip pra-eksekusi ke dalamnya di host.
Anda juga dapat masuk ke manajemen file DataFlux Func dan mengunggah Skrip pra-eksekusi yang ditulis sendiri:
1.3 Memulai Ulang Func dan Memverifikasi
Setelah semua persiapan selesai, mulai ulang DataFlux Func
Kembali ke Skrip sebelumnya dan jalankan lagi, Anda akan melihat bahwa pustaka opencv-python sudah dapat diimpor dengan benar:
2. Detail Eksekusi Skrip Pra-eksekusi
Setiap kali DataFlux Func dimulai, terlebih dahulu akan memeriksa apakah terdapat Skrip pra-eksekusi.
Ketika terdapat Skrip pra-eksekusi, DataFlux Func akan mengurutkannya berdasarkan nama dan menjalankannya secara berurutan, dan DataFlux Func baru akan dimulai secara normal jika semua Skrip berhasil dijalankan.
Jika perlu mengamati proses eksekusi Skrip pra-eksekusi, Anda dapat mengikutinya dengan perintah berikut:
| Lihat Log Kontainer | |
|---|---|
1 | |
Dengan Skrip pra-eksekusi di atas sebagai contoh, Anda dapat melihat output sebagai berikut:
| Log Eksekusi | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | |
Dapat dilihat bahwa Skrip pra-eksekusi telah dijalankan dengan benar dan menginstal paket dependensi yang diperlukan.
3. Mengganti Paket Python dalam Image
Dalam beberapa kasus, paket yang dibutuhkan pengguna dalam Skrip tidak kompatibel dengan versi paket yang sudah disertakan dalam image Func.
Dalam kasus ini, Anda juga dapat menggunakan 'Skrip pra-eksekusi' untuk mengganti paket, seperti:
| Menginstal paket simplejson versi terbaru | |
|---|---|
1 | |
Karena 'Skrip pra-eksekusi' dijalankan sebelum Func dimulai, paket yang diinstal PIP tidak hanya memengaruhi Skrip pengguna, tetapi juga seluruh DataFlux Func.
Oleh karena itu, saat menggunakannya, pastikan operasi ini tidak memengaruhi jalannya DataFlux Func itu sendiri.