Saya menjalankan Kaisar uwsgi dengan berbagai Vassal yang masing-masing melayani aplikasi Python spesifik dari virtualenv yang berbeda. Karena uwsgi dikompilasi dengan interpreter Python 2.7 sendiri, mencoba menggunakan virtualenv dengan Python 3 di dalamnya menghasilkan kesalahan berikut di vassal.log:
ImportError: No module named site
Saya percaya asal mula kesalahan ini adalah bahwa uwsgi menggunakan interpreter Python 2.7 bawaannya, sedangkan direktori virtualenv yang dijalankan hanya mendukung interpreter Python 3. Memang, ketika saya menggunakan uwsgi lain (hanya dengan menginstalnya pip install uwsgi
di virtualenv yang sama), kesalahannya hilang. Namun, saya ingin satu Kaisar untuk memerintah beberapa virtualenv yang berbeda, jadi menginstal uwsgi terpisah di masing-masing bukan pilihan.
Menurut jawaban ini pada Stackoverflow, Cara yang Tepat untuk menyelesaikan ini adalah mengkompilasi uwsgi dengan interpreter Python yang berbeda sebagai modul yang dapat di-load. Sebelum saya berkomitmen pada pendekatan ini, saya ingin tahu bagaimana saya bisa mengonfigurasi Vassal saya untuk masing-masing menggunakan plugin juru bahasa lain.
Saat ini saya memiliki satu Kaisar yang dimulai dari /etc/rc.local saya dengan pengaturan berikut:
[uwsgi]
uid = www-data
gid = www-data
master = true
emperor = /etc/uwsgi/vassals
daemonize = /var/log/uwsgi/emperor.log
Lalu aku punya banyak pengikut dengan file ini seperti ini:
[uwsgi]
master = false
single-interpreter = true
socket = /tmp/%n.sock
virtualenv = /home/user/.virtualenvs/djangoproject
chdir = /home/user/djangoproject
wsgi-file = project/wsgi.py
logto = /var/log/uwsgi/%n.log
Saya tidak punya masalah mengkompilasi uwsgi versi tweak dengan beberapa plugin juru bahasa, tetapi saya ingin tahu apa yang harus saya ubah dalam konfigurasi saya untuk benar - benar menggunakan penerjemah terpisah ini. Bisakah saya mengatakan satu vassal.ini:
plugin = python3.4
dan di tempat lain:
plugin = python2.7
?
Tolong bantu saya mencari tahu cara menggabungkan Python 2.7 dan Python 3 virtualenvs di bawah uwsgi Emperor yang sama.
plugins=python3
atauplugins=python36