Layanan ini adalah worker berbasis Python yang secara otomatis memproses data tomografi. Ia mendengarkan pesan dari antrian RabbitMQ, mengambil file data dari server FTP, melakukan pemrosesan untuk menghasilkan gambar visualisasi, mengunggah hasilnya ke S3 dan server FTP tujuan, dan terakhir memperbarui catatan di MongoDB.
- Mendengarkan Pesan: Layanan terus mendengarkan pesan baru di antrian RabbitMQ yang telah ditentukan. Setiap pesan berisi nama file JSON yang perlu diproses.
- Mengunduh Data: Setelah menerima pesan, layanan akan terhubung ke server FTP sumber untuk mengunduh file JSON yang sesuai.
- Pemrosesan Data: Data dari file JSON diproses menggunakan NumPy dan SciPy untuk merekonstruksi gambar tomografi berdasarkan data sensor.
- Menghasilkan Visualisasi: Gambar visualisasi dari data yang telah diproses dibuat menggunakan Matplotlib.
- Mengunggah Hasil: Gambar yang dihasilkan diunggah ke dua lokasi:
- Amazon S3: Untuk penyimpanan objek yang skalabel dan akses melalui URL.
- Server FTP Tujuan: Untuk integrasi dengan sistem lain atau untuk keperluan arsip.
- Memperbarui Database: URL gambar dari S3 dan metadata lainnya disimpan ke dalam dokumen yang relevan di koleksi MongoDB, menggunakan
guidSurveyyang berasal dari nama file sebagai kunci.
- Python 3.8+
- Server RabbitMQ
- Dua server FTP (satu untuk sumber data, satu untuk hasil)
- Bucket Amazon S3 (atau layanan kompatibel seperti MinIO)
- Server MongoDB
-
Clone Repositori
git clone <url-repositori-anda> cd <nama-direktori-repositori>
-
Instal Dependensi
Buat dan aktifkan virtual environment (dianjurkan), lalu instal semua paket yang diperlukan dari file
requirements.txt.python -m venv venv source venv/bin/activate # Di Windows, gunakan `venv\Scripts\activate` pip install -r requirements.txt
-
Konfigurasi Lingkungan
Buat file
.envdi direktori root proyek. Anda dapat menyalin darienv.examplejika ada. Isi semua variabel yang diperlukan.# RabbitMQ RABBITMQ_HOST=localhost RABBITMQ_PORT=5672 RABBITMQ_VHOST=/ RABBITMQ_USERNAME=user RABBITMQ_PASSWORD=password RABBITMQ_QUEUE=tomograph_queue # FTP Sumber (untuk mengambil file JSON) FTP_HOST=ftp.sumber.com FTP_PORT=21 FTP_USER=user_sumber FTP_PASS=pass_sumber FTP_FOLDER=/path/to/json/files # FTP Tujuan (untuk mengunggah hasil gambar) FTP_HOST_HASIL=ftp.tujuan.com FTP_PORT_HASIL=2121 FTP_USER_HASIL=user_tujuan FTP_PASS_HASIL=pass_tujuan FTP_FOLDER_HASIL=/result_visualisasi # S3 S3_ENDPOINT_URL=[https://s3.amazonaws.com](https://s3.amazonaws.com) S3_ACCESS_KEY=your_access_key S3_SECRET_KEY=your_secret_key S3_BUCKET=nama-bucket-anda # MongoDB MONGO_URI=mongodb://user:pass@host:port/ MONGO_DB=nama_database_anda
Untuk memulai worker, jalankan skrip utama dari terminal:
python tomograph_processor.pyLayanan akan mulai mengonsumsi pesan dari RabbitMQ dan memproses data sesuai alur kerja. Untuk menghentikan layanan, tekan CTRL+C.