Rumah > pembangunan bahagian belakang > Tutorial Python > Sediakan Pekerja Saderi dengan Penyelia pada tangkai kacang anjal melalui .ebextensions

Sediakan Pekerja Saderi dengan Penyelia pada tangkai kacang anjal melalui .ebextensions

Patricia Arquette
Lepaskan: 2024-12-17 12:40:24
asal
942 orang telah melayarinya

Setup Celery Worker with Supervisord on elastic beanstalk via .ebextensions

Pengenalan: Tulang Belakang Aplikasi Boleh Skala

Membina aplikasi yang teguh dan berskala selalunya bermakna menangani tugasan yang memerlukan lebih daripada satu pelayan atau utas boleh dikendalikan dengan cekap. Sama ada memproses imej, menghantar e-mel atau melakukan pengiraan berat data, memunggah tugasan ini ke baris gilir tugas adalah amalan terbaik. Untuk Text2Infgraphic, penjana infografik berkuasa AI saya, cabarannya adalah jelas: Saya perlu mengendalikan banyak penyerahan kerja serentak dengan cekap sambil mengekalkan pengalaman pengguna yang lancar. Ini menyebabkan saya menggunakan Saderi, baris gilir tugas teragih yang berkuasa dan Penyelia, sistem pengurusan proses, semuanya digunakan dengan lancar pada AWS Elastic Beanstalk menggunakan kuasa .ebextensions.

Berikut ialah panduan langkah demi langkah tentang cara saya menyediakan pekerja Saderi dengan Penyelia pada Elastic Beanstalk. Tetapi pertama-tama, mari kita bongkarkan komponen utama persediaan ini dan sebab ia penting.

Apa Itu Saderi?

Pada terasnya, Celery ialah sistem baris gilir tugasan teragih yang membolehkan anda memunggah tugasan yang memakan masa untuk memisahkan proses atau pelayan. Ia digunakan secara meluas dalam aplikasi Python untuk melaksanakan kerja latar belakang secara tidak segerak atau mengikut jadual. Untuk Text2Infografik, Celery ialah penyelesaian yang sempurna untuk mengendalikan proses pengiraan intensif menjana maklumat grafik tersuai daripada input pengguna.

Beberapa kebaikan menggunakan Saderi:

Pelaksanaan Asynchronous: Tugasan boleh dijalankan di latar belakang tanpa menyekat aplikasi utama.
Skalabiliti: Tambahkan lebih ramai pekerja dengan mudah untuk mengendalikan beban yang meningkat.
Keterluasan: Bersepadu dengan pelbagai broker mesej seperti RabbitMQ atau Redis.

Apakah itu Penyelia?

Menguruskan proses seperti pekerja Saderi secara manual boleh menjadi kerumitan, terutamanya apabila anda memerlukannya untuk dimulakan semula secara automatik selepas ranap sistem atau semasa penggunaan. Penyelia ialah sistem kawalan proses yang ringan yang menyelesaikan masalah ini dengan memerhatikan proses anda dan memastikan ia sentiasa aktif dan berjalan.

Dengan Penyelia, anda boleh:

Mulakan semula pekerja Saderi secara automatik jika mereka gagal.
Permudahkan pengurusan proses dengan satu fail konfigurasi.
Log aktiviti proses untuk penyahpepijatan dan pemantauan yang lebih baik.

Apakah AWS Elastic Beanstalk?

AWS Elastic Beanstalk ialah perkhidmatan terurus sepenuhnya yang mengautomasikan penggunaan, penskalaan dan pengurusan aplikasi. Ia mengabstraksi banyak kerumitan pengurusan infrastruktur, membolehkan pembangun menumpukan pada menulis kod dan bukannya mengkonfigurasi pelayan. Elastic Beanstalk menyokong pelbagai persekitaran, daripada pelayan web ringkas kepada persediaan yang lebih kompleks seperti pekerja Saderi.

Untuk Text2Infografik, skalabiliti dan kesederhanaan Elastic Beanstalk adalah tidak ternilai. Apabila permintaan pengguna berubah-ubah, keupayaan untuk menskalakan contoh pekerja secara dinamik memastikan kerja diproses dengan cekap, walaupun pada waktu puncak.

Apakah .ebextensions?

.ebextensions ialah ciri Elastic Beanstalk yang membolehkan anda menyesuaikan persekitaran anda semasa penggunaan. Dengan fail konfigurasi .ebextensions, anda boleh:

Pasang perisian dan kebergantungan yang diperlukan.
Konfigurasikan perkhidmatan seperti Penyelia dan pekerja Saderi.
Tambah pembolehubah persekitaran dan uruskan kebenaran.
Ini membolehkan anda mengintegrasikan Seleri dan Penyelia dengan lancar ke dalam penempatan Elastic Beanstalk anda tanpa campur tangan manual setiap kali anda menggunakan.

Mengapa Saderi untuk Text2Infografik?

Text2Infografik direka untuk membantu pemasar dan pencipta kandungan mengubah siaran blog menjadi maklumat grafik yang menakjubkan. Setiap permintaan penjanaan maklumat grafik adalah intensif dari segi pengiraan, melibatkan penyelidikan topik berasaskan AI, pengoptimuman reka bentuk dan sumber grafik vektor. Untuk mengekalkan pengalaman pengguna yang lancar, tugasan ini mesti dimuat turun kepada pekerja latar belakang yang boleh mengendalikan berbilang permintaan secara serentak. Pengendalian tugas tak segerak dan skalabiliti Celery menjadikannya pilihan yang jelas.

Kenapa Penyelia?

Walaupun Elastic Beanstalk boleh mengurus pelayan web secara asli, ia tidak mempunyai sokongan terbina dalam untuk proses latar belakang seperti pekerja Saderi. Masuk Pengawas. Ia bertindak sebagai penyelia untuk proses pekerja Saderi, memastikan ia berjalan secara berterusan dan dimulakan semula secara automatik jika ia gagal. Kebolehpercayaan ini penting untuk memproses permintaan penjanaan maklumat grafik tanpa gangguan.

Dengan set pentas, mari kita selami butiran teknikal mengkonfigurasi Celery, Supervisord dan eb_extensions pada Elastic Beanstalk untuk mencipta baris gilir tugas yang berskala dan cekap untuk aplikasi anda.

Langkah demi Langkah: Sediakan Saderi dengan Penyelia pada Tangkai Kacang Elastik

Dalam bahagian ini, kita akan melihat fail .ebextensions yang diperlukan untuk menyediakan Celery dengan Supervisor pada Elastic Beanstalk. Setiap langkah diterangkan secara terperinci, dengan petua untuk membantu anda mengelakkan perangkap biasa.

1. Memasang Supervisor
Fail: 01_install_supervisord.config

Fail ini memasang Supervisord dan menyediakan pengguna bukan root untuk menjalankan proses dengan selamat.

commands:
  01_install_pip:
    command: "yum install -y python3-pip"
    ignoreErrors: true
  02_install_supervisor:
    command: "/usr/bin/pip3 install supervisor"
  03_create_nonroot_user:
    command: "useradd -r -M -s /sbin/nologin nonrootuser || true"
    ignoreErrors: true
Salin selepas log masuk
Salin selepas log masuk

Penjelasan:

Pasang pip: Memastikan pengurus pakej Python tersedia.
Pasang Penyelia: Menggunakan pip untuk memasang Supervisord, pengurus proses yang ringan dan berkuasa.
Buat pengguna bukan root: Menambah pengguna terhad (nonrootuser) tanpa shell log masuk atau direktori rumah. Menjalankan proses sebagai pengguna bukan akar ialah amalan terbaik keselamatan.

? Petua: Sentiasa gunakan ignoreErrors: true apabila arahan mungkin gagal semasa penggunaan berulang. Ini memastikan penggunaan anda tidak akan gagal jika pengguna atau pakej sudah wujud.

2. Membersihkan Proses Lapuk
Fail: 02_cleanup_existing_supervisord.config

Fail ini mengendalikan pembersihan tika Supervisor lama dan fail soket yang mungkin berlarutan di antara penempatan.

commands:
  kill_existing_supervisord:
    command: "pkill supervisord || true"
    ignoreErrors: true
  remove_stale_socket:
    command: "rm -f /tmp/supervisor.sock"
    ignoreErrors: true
Salin selepas log masuk

Penjelasan:

Bunuh Penyelia sedia ada: Memastikan tiada proses Penyelia yang sesat sedang berjalan. || bahagian benar memastikan arahan ini tidak akan membuang ralat jika tiada proses ditemui.
Alih keluar soket basi: Memadamkan mana-mana fail soket Supervisord lama, yang boleh menghalang Supervisord daripada bermula.

? Petua: Membersihkan soket dan proses adalah penting dalam persekitaran seperti Elastic Beanstalk, di mana penggunaan kadangkala boleh meninggalkan sisa konfigurasi sebelumnya.

3. Mengkonfigurasi Saderi dengan Penyelia
Fail: 03_celery_configuration.config

Fail ini mencipta fail konfigurasi Supervisor dan memulakan proses pekerja Saderi.

files:
  "/etc/supervisord.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      [unix_http_server]
      file=/tmp/supervisor.sock
      chmod=0770
      chown=root:nonrootuser

      [supervisord]
      logfile=/var/log/supervisord.log
      logfile_maxbytes=50MB
      logfile_backups=10
      loglevel=info
      pidfile=/tmp/supervisord.pid
      nodaemon=false
      minfds=1024
      minprocs=200
      user=root

      [rpcinterface:supervisor]
      supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

      [supervisorctl]
      serverurl=unix:///tmp/supervisor.sock

      [program:celery]
      command=celery -A application.celery worker --loglevel=INFO
      directory=/var/app/current
      autostart=true
      autorestart=true
      startsecs=10
      stopwaitsecs=600
      stdout_logfile=/var/log/celery_worker.log
      stderr_logfile=/var/log/celery_worker.err.log
      environment=PATH="/var/app/venv/staging-LQM1lest/bin:$PATH"
      user=nonrootuser
Salin selepas log masuk

Penjelasan:

Soket Unix untuk kawalan: Bahagian unix_http_server mencipta soket selamat untuk berinteraksi dengan Supervisord.
Log: Log disimpan dalam /var/log/supervisord.log, dengan dasar putaran untuk mengelakkan penggunaan cakera daripada berpusing di luar kawalan.
Blok program saderi:
Arahan: Menjalankan pekerja Saderi dengan konfigurasi aplikasi.
Autostart dan autorestart: Memastikan Saderi bermula secara automatik semasa penggunaan dan dimulakan semula jika gagal.
Log: Log keluaran Saderi ke /var/log/celery_worker.log dan /var/log/celery_worker.err.log.
Persekitaran: Memastikan persekitaran maya Python yang betul digunakan.

? Petua: Gunakan direktori=/var/app/current untuk mengarahkan Supervisor ke direktori penggunaan aplikasi, yang dikemas kini dengan setiap penempatan Elastic Beanstalk.

4. Penyelia Bermula
Fail: 03_celery_configuration.config (bersambung)

container_commands:
  01_start_supervisor:
    command: "supervisord -c /etc/supervisord.conf"
Salin selepas log masuk

Penjelasan:

Arahan bekas: Ini dijalankan selepas aplikasi anda digunakan tetapi sebelum persekitaran ditandakan sebagai sedia. Memulakan Penyelia di sini memastikan pekerja Saderi anda berjalan apabila apl disiarkan secara langsung.

? Petua: Elastic Beanstalk memproses arahan bekas dalam susunan abjad, jadi awalan perintah anda dengan nombor seperti 01_ untuk mengawal susunan pelaksanaan.

Trik Seronok dengan eb_extensions

Penyahpepijatan Dipermudahkan: Jika sesuatu tidak berfungsi, tambahkan arahan bekas sementara untuk mencetak pembolehubah persekitaran atau senaraikan kandungan direktori:

commands:
  01_install_pip:
    command: "yum install -y python3-pip"
    ignoreErrors: true
  02_install_supervisor:
    command: "/usr/bin/pip3 install supervisor"
  03_create_nonroot_user:
    command: "useradd -r -M -s /sbin/nologin nonrootuser || true"
    ignoreErrors: true
Salin selepas log masuk
Salin selepas log masuk

Semak log masuk /var/log/eb-activity.log.

Guna Semula Konfigurasi Biasa: Simpan coretan konfigurasi dikongsi dalam fail YAML yang berasingan, kemudian masukkannya dalam berbilang fail .ebextensions menggunakan arahan sertakan (disokong secara tidak rasmi).

Persediaan ini memastikan pekerja Saderi anda diuruskan dengan cekap dengan Penyelia, berskala bersama aplikasi Elastic Beanstalk anda. Sama ada anda mengendalikan penjanaan maklumat grafik atau sebarang tugas latar belakang yang lain, pendekatan ini menawarkan kebolehpercayaan, skalabiliti dan ketenangan fikiran.

Atas ialah kandungan terperinci Sediakan Pekerja Saderi dengan Penyelia pada tangkai kacang anjal melalui .ebextensions. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan