Gunicorn: Tambahkan dukungan Windows

Dibuat pada 1 Mei 2013  ·  90Komentar  ·  Sumber: benoitc/gunicorn

Ini terkait dengan hal-hal yang kami diskusikan di PyCon

Improvement FeaturCore help wanted - Mailing List - Platforwindows

Komentar yang paling membantu

@jtan4nih sikap itu tidak beralasan.

Python adalah lintas platform, gunicorn tidak.

Semua 90 komentar

usap. direncanakan untuk R18.

Beberapa pembaruan tentang itu:

  • Dukungan SOCKET sudah selesai, cabang akan diposting online minggu depan

MELAKUKAN:

menangani layanan start/stop/restart untuk menggunakan gunicorn sebagai layanan windows lengkap. Itu menggantikan entah bagaimana penggunaan sinyal di bawah unix.

dukungan akhirnya akan terjadi di R20 . saya akan membuat PR baru untuk melacak perkembangan fitur ini minggu depan.

Hal-hal yang harus diperbaiki adalah:

  • sesuaikan pemberitahuan Pekerja ke windows
  • port sinyal ke windows: reload dan reexec
  • pastikan soket dapat diwariskan di antara proses

Apa kemajuan dalam menambahkan dukungan windows untuk gunicorn?. Atau lebih tepatnya Seberapa jauh Anda dari R20 ? Saya mengalami masalah yang sama dengan #587

Kemajuan lambat. Saya ingin melepaskan R19 dengan pekerjaan berulir sekarang. Saya akan mendorong versi pada hari Senin. dukungan windows akan tiba tepat setelahnya.

Apakah versi yang didukung windows ini tersedia di suatu tempat?

Dukungan Windows akan ada di R20, jadi saya kira itu akan lama sampai guincorn akan memiliki dukungan windows... Saya membuat vm dengan Ubuntu, dan ini bekerja untuk saya.....

Hanya ingin tahu tentang kemajuan apa pun dalam hal ini. Sebagai umpan pertama bahkan tidak perlu cepat; keuntungan besar adalah dapat mengembangkan dengan Gunicorn di Windows dan mendorong ke server Linux (misalnya Heroku) tanpa mengubah konfigurasi.

@robertlagrant ada di tugas saya. Saya perlu mencari lisensi windows terlebih dahulu. R20 akan dirilis pada bulan oktober,

Bagaimana dengan gambar VM di modern.ie ? Itu gratis dan legal
Pada 22 Sep 2014 15:30, "Benoit Chesneau" [email protected] menulis:

@robertlagrant https://github.com/robertlagrant ada di tugas saya sampai
akhir tahun. Saya perlu mencari lisensi windows terlebih dahulu.


Balas email ini secara langsung atau lihat di GitHub
https://github.com/benoitc/gunicorn/issues/524#issuecomment -56372470.

Saya menggunakan gambar modern.ie untuk menguji aplikasi web di IE8 baru-baru ini. Mudah untuk memulai dan bekerja dengan baik.

@benoitc Jika diperlukan, saya yakin PSF dapat memberi Anda lisensi windows.

@benoitc apakah ada cabang WIP untuk ini? Saya bukan pengguna Windows, tetapi saya dapat melihat ini.

@berkerpeksag belum :/ kita harus segera memulainya.

seperti yang dikatakan @cyberdelia kami dapat meminta lisensi windows di PSF yang dapat digunakan proyek gunicorn untuk pengembangan tersebut. Pikiran?

Itu ide yang bagus. https://www.python.org/psf/grants/ memiliki semua informasi tentang proposal hibah.

Ada pembaruan tentang ini?

Saya juga mencari pembaruan untuk ini.

@berkerpeksag mari kita bicara secepatnya di IRC, ping saya kadang-kadang sebelumnya karena saya jauh dari hal instan hari ini :)

@benoitc ada pembaruan untuk yang ini?

@lealhugui sejauh yang saya tahu tidak ada kemajuan sejak itu. Pokoknya saya datang dengan rencana:

  1. kita harus meletakkan gunicorn di dalam sistem CI yang menangani windows untuk mengetahui di mana ia gagal
  2. mulai port melalui perpustakaan IPC baru (kadang-kadang bulan depan) untuk memulai pekerjaan di windows

Saya bisa mengharapkan rilis kadang-kadang pada bulan Maret. Mungkin lebih cepat tapi tidak ada janji :) Pekerjaan tentu saja bisa berjalan lebih cepat jika seseorang yang benar-benar tahu jendela lebih baik dari saya (petunjuk saya tidak menggunakan windows sejak 1995...) dapat membantu!

@benoitc setelah pertengahan Januari, saya dapat membantu (pada dasarnya pengujian, atau apa pun yang Anda butuhkan dan saya dapat membantu).

@lealhugui terima kasih! Saya akan memberikan pembaruan ASAP

Berharap hal-hal berjalan dengan baik. Apakah kita masih baik dengan rilis ini pada bulan Maret?

@tannaalok tidak mungkin. Semoga @benoitc dapat mempublikasikan karya IPC dan mungkin dukungan Windows akan dimungkinkan. Ini akan memakan waktu beberapa saat untuk pekerjaan IPC untuk mendarat, kemudian sisa pekerjaan Windows untuk ditemukan, diprioritaskan, dikerjakan. Sangat sulit untuk mengatakannya.

@tilgovi pekerjaan IPC akan mendarat di cabang terkadang minggu depan akhirnya :)

Sekarang tentang versi windows, inilah rencana yang saya miliki. Hal pertama yang harus dilakukan adalah mengaitkan Gunicorn ke CI windows untuk mulai mencatat masalah. Kemudian ada 2 skenario, menjalankan gunicorn di cygwin atau menjalankan gunicorn di jendela biasa. Keduanya dapat memicu hasil yang berbeda dan perlu diuji. Sejauh yang saya tahu hal-hal untuk membuat gunicorn portabel adalah sebagai berikut:

  • penanganan sinyal : sinyal bekerja secara berbeda di bawah jendela dan kita perlu menemukan cara untuk mengekspos fitur berikut: http://docs.gunicorn.org/en/stable/signals.html
  • pemijahan pekerja : mungkin ada beberapa perbedaan pada windows. Pekerjaan IPC akan menghapus penggunaan file sementara untuk memeriksa apakah pekerja masih hidup menggantikannya dengan pipa. Bagian ini harus dibuat kompatibel
  • pekerja mendukung : saya belum yakin bagaimana berperilaku pekerja gevent, eventlet dan tornado di windows. ini adalah panggilan yang bagus untuk membaginya di luar gunicorn. Jadi kita bisa mengupgradenya secara terpisah. Pekerja gthread dapat bekerja secara transparan jika kita pergi ke python 3. yang akan terjadi.

Apakah saya melewatkan sesuatu? Bantuan apa pun diterima, saya sendiri bukan pengguna harian windows. Jadi siapa pun yang berpengalaman di windows yang ingin memimpin bagian itu untuk menjadikan platform windows sebagai warga negara pertama di gunicorn dipersilakan!

Python 3.5 menambahkan fitur yang berguna untuk menangani sinyal di Windows: signal.set_wakeup_fd() sekarang menerima pegangan soket di Windows.
https://docs.python.org/dev/library/signal.html#signal.set_wakeup_fd

seperti yang dikatakan @cyberdelia kita bisa meminta lisensi windows di PSF

Microsoft memberikan lisensi MSDN gratis untuk pengembang inti Python. Misalnya, sebagai pengembang inti, saya memiliki akses ke Visual Studio 2015.

@haypo terima kasih. Sebenarnya itu juga bisa digunakan untuk membangunkan arbiter di unix juga... Sangat bermanfaat.

Jika pengembang inti dapat membantu maka itu akan berguna :) Adakah ide tentang cara memintanya ketika itu adalah proyek eksternal?

Anda juga memiliki WSL (Windows untuk Linux) yang ditargetkan untuk kemampuan Windows

Apakah ada cara seseorang dengan pengetahuan linux dan gunicorn yang terbatas dapat membantu mem-porting ini ke windows, atau apakah masalahnya terlalu sepele?

Mengapa masalah ini ditutup? Saya tidak dapat menemukan info tentang bekerja di windows

Masalah ini masih terbuka.

@DominikDitoIvosevic masih buka. Saya akan memberikan semacam peta jalan kadang-kadang minggu ini.

Saya menemukan beberapa bacaan kompatibilitas hari ini. Saya sedang melihat pekerjaan saya di #1310. Saya menangani FD_CLOEXEC secara berbeda dari perpustakaan systemd C. Itu membawa saya ke PEP 446 , memikirkan tentang perilaku fork , dan mengingat bahwa tidak ada fork di Windows.

Untuk memulai, berikut adalah beberapa hal yang kami butuhkan di peta jalan:

  • Siapkan CI
  • Ganti os.fork , mungkin dengan multiprocessing.Process
  • Ganti WorkerTemp dengan multiprocessing.Pipe
  • Tambahkan versi kompatibilitas pembantu pewarisan FD
  • (temukan hal-hal lain, yang mungkin lebih kecil, dan perbaiki)

Terjebak dengan Windows di tempat kerja ini akan sangat membantu saya. Sangat mengantisipasi fitur ini!

Saya menyadari ini mungkin bukan jawaban, tetapi saya menemukan pelayan sangat bagus untuk
jendela.

08-08-2016 22:39 GMT+03:00 hirolau [email protected] :

Terjebak dengan Windows di tempat kerja ini akan sangat membantu saya. Sangat mengantisipasi
fitur ini!


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/benoitc/gunicorn/issues/524#issuecomment -238351654
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AALnfBAXBrmPlU1JPx6RXI0vFQPLmBlyks5qd4XhgaJpZM4AnyCw
.

Salam sejahtera,
Gleb

@chester89 ini pasti tidak benar-benar tepat di sana....

@hirolau saya baru saja mendapatkan lisensi pengembang MSDN bulan lalu sehingga saya dapat mengujinya dengan mudah di windows. Semoga @berkerpeksag bisa membantu untuk tes. Saya akan menyusun rencana jadi kami pastikan tersedia kadang-kadang bulan depan :)

@benoitc - benjolan tak tahu malu!

Saya biasanya menggunakan windows sehingga pekerjaan gunicorn di windows akan sangat dihargai. Terima kasih !
Apakah Anda punya rencana kapan akan siap?

ada berita tentang ini? kami terpaksa menggunakan Windows dalam produksi. Jika pekerjaan terhenti, bisakah Anda membagikan rancangan rencana? Bersulang!

@cmorgan Situasi yang sama di sini. Apakah ada yang punya pembaruan tentang masalah ini?

@benoitc ada berita tentang ini?

Halo semuanya
Ada berita tentang ini?

Saya yakin setiap pembaruan akan ditambahkan ke masalah ini. Tidak perlu meminta pembaruan.

Halo semua,

Maaf belum sempat menjawab. Aku sudah cukup sibuk beberapa hari ini. Jadi sepertinya ada banyak orang yang menunggu fitur ini sudah waktunya untuk membuatnya. II akan menyusun rencana pada hari Minggu tentang hal itu dan mencari cara untuk mewujudkannya :)

Saya percaya membagi ini menjadi tugas-tugas kecil yang lebih dapat ditindaklanjuti mungkin merupakan cara terbaik ke depan.

Karena itu saya telah mengajukan #1467 untuk bagian "set up CI" dengan PR #1468 untuk menambahkan konfigurasi AppVeyor. Contoh uji coba dapat dilihat di sini:
https://ci.appveyor.com/project/edmorley/gunicorn/build/windows-ci.18

Selain perubahan yang lebih besar yang disebutkan dalam komentar sebelumnya (sinyal, IPC pekerja, penanganan kekurangan garpu, dll.), hal-hal berikut harus diselesaikan sebelum pengujian berjalan sama sekali:

@edmorley terima kasih, akan dilihat secepatnya :)

Kapan saya bisa menghormati fungsi ini Masalah ini dimulai sekitar empat tahun yang lalu

Hai,
Kami juga ingin memiliki fungsi ini, apakah kami tahu kapan ini akan mulai terjadi?

Halo gan, ini penanganannya kapan ya? :)

Jika ada yang ingin membantu, menangani salah satu masalah yang ditemukan @edmorley akan menjadi PR yang berguna.

Sadarilah bahwa beberapa hal mungkin berubah lebih dramatis untuk memungkinkan hal ini.

Tidak ada garis waktu untuk ini sekarang. Jika Anda ingin membantu, IRC mungkin merupakan tempat terbaik untuk mengobrol tentangnya, atau membuka masalah yang lebih kecil untuk item pekerjaan individu.

Silakan berlangganan masalah ini jika Anda ingin diberitahu tentang kemajuan. Saat ini tidak ada garis waktu.

FWIW, Gunicorn bekerja di Cygwin di Windows. Saya tahu itu tidak terlalu membantu tetapi ada ...

@Zorlin Saya tidak bisa membuatnya bekerja dengan Cygwin di Windows. Saya mencoba melakukan contoh dari dokumentasi resmi

$ pip install gunicorn
$ cat myapp.py
  def app(environ, start_response):
    data = b"Hello, World!\n"
    start_response("200 OK", [
        ("Content-Type", "text/plain"),
        ("Content-Length", str(len(data)))
    ])
    return iter([data])
$ gunicorn -w 4 myapp:app

Saya terus mendapatkan kesalahan ini di Cygwin

<project-name>\flask\lib\site-packages\gunicorn\util.py", line 9, in <module>
    import fcntl
ModuleNotFoundError: No module named 'fcntl'

ini juga berjalan di subsistem di windows 10 jadi mungkin tidak diperlukan lagi?

Untuk mendukung windows secara native, kami memerlukan yang berikut:

  • [ ] buka python3 untuk menyederhanakan kode
  • [ ] gunakan CreateProcessW untuk menelurkan proses alih-alih os.fork (mungkin menggunakan kembali abstraksi _winapi yang digunakan dalam multiproses?
  • [ ] soket saya yakin sudah ada beberapa kode yang di-porting untuk asyncio dan tersedia di python 3 yang dapat digunakan untuk gthreads
  • [ ] izin. kita harus mendukung cara windows mengizinkan peluncuran layanan untuk melakukan daemonisasi. juga hak istimewa harus ditangani secara berbeda

(mungkin menggunakan kembali abstraksi _winapi yang digunakan dalam multiprocessing?

BTW, multiprocessing menggunakan CreateProcess di popen_spawn_win32.py dan itu bukan bagian dari proses kompatibilitas mundur Python karena ini adalah modul internal.

Halo semuanya! Bagaimana kemajuan untuk masalah ini? Apakah kami memiliki target tanggal untuk penyelesaiannya? Terima kasih!

@bartmika no. Tidak akan ada target tanggal. Kami memiliki banyak pekerjaan yang harus dilakukan seperti yang dijelaskan Benoitc. Kami menyambut bantuan. Seperti yang saya katakan di atas, silakan berlangganan masalah ini untuk pembaruan. Kami akan memperbarui ketika ada sesuatu untuk dibagikan.

Terima kasih @tilgovi ,

Saya ingin membahas kemungkinan menempatkan hadiah untuk menutup masalah ini. Mungkin pengembang dari Gunicorn tolong hubungi saya di bart [ at ] simalam.com

Terima kasih!

@bartmika maaf adalah minggu yang sibuk. Saya akan menghubungi Anda besok setelah saya menghubungi @tilgovi & @berkerpeksag . Ide bagus.

@benoitc hanya ingin memeriksa status di Gunicorn untuk Windows. Saya melihat bahwa belum ada tanggal rilis tetapi ingin melihat apakah ada beta yang dapat saya uji di Windows.

Pekerjaan @jmaulsby belum benar-benar dimulai. Aku perlahan kembali padanya. Rencana bagi saya adalah membuat rilis besar berikutnya terjadi kadang-kadang pada bulan Desember termasuk beberapa dukungan windows.

@bartmika saya telah dilacak akhir-akhir ini. Saya akan mencoba menyiapkan rencana dan mempublikasikannya akhir minggu ini.

Jadi apakah sekarang ada dukungan untuk Windows?. Ini bulan Desember

Menantikannya! Ini Januari.

@benoitc Ada pembaruan?

Hai,

Baru check in lagi, ada yang baru?

Terima kasih
mike

Hai

Bisakah saya menggunakan Apache Airflow di windows sekarang?

Terima kasih
Sudhakar

Hai,

Saya mencoba perintah berikut tetapi saya mendapatkan kesalahan ini. Bisakah Anda membantu dalam hal ini?

(flaskms) C:\Users\Socrates>gunicorn --bind 0.0.0.0:8000 hello-world:app
Traceback (most recent call last):
  File "c:\programdata\anaconda3\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\programdata\anaconda3\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\ProgramData\Anaconda3\Scripts\gunicorn.exe\__main__.py", line 5, in <module>
  File "c:\programdata\anaconda3\lib\site-packages\gunicorn\app\wsgiapp.py", line 10, in <module>
    from gunicorn.app.base import Application
  File "c:\programdata\anaconda3\lib\site-packages\gunicorn\app\base.py", line 12, in <module>
    from gunicorn import util
  File "c:\programdata\anaconda3\lib\site-packages\gunicorn\util.py", line 9, in <module>
    import fcntl
ModuleNotFoundError: No module named 'fcntl'

Sebagai peretasan, saya membuat file fcntl.py dengan konten di bawah ini, mengkompilasinya sebagai file fcntl.cpython-36.pyc , meletakkannya di bawah folder __pycache__ , memulai ulang terminal, dan menjalankan perintah gunicorn --bind 0.0.0.0:8000 hello-world:app , tetapi masih belum berhasil.

konten fcntl.py:

FD_CLOEXEC = 1
F_DUPFD = 0
F_GETFD = 1
F_SETFD = 2
F_GETFL = 3
F_SETFL = 4
F_GETOWN = 5
F_SETOWN = 6
F_GETLK = 7
F_SETLK = 8
F_SETLKW = 9
F_RGETLK = 10
F_RSETLK = 11
F_CNVT = 12
F_RSETLKW = 13
F_RDLCK = 1
F_WRLCK = 2
F_UNLCK = 3
F_UNLKSYS = 4

def fcntl(fd, op, arg=0):
    return 0

def ioctl(fd, op, arg=0, mutable_flag=True):
    if mutable_flag:
        return 0
    else:
        return ""

def flock(fd, op):
    return

def lockf(fd, operation, length=0, start=0, whence=0):
    return

Dapatkan ini dari https://stackoverflow.com/questions/11087682/does-gunicorn-run-on-windows

Akan sangat membantu apakah ada yang bisa menyarankan alternatif Gunicorn terbaik untuk Windows untuk saat ini?

Pembaruan: Saya menggunakan pelayan sekarang, alternatif yang sangat bagus :)

Sudah 5 tahun dan ada pembaruan tentang yang satu ini? Terima kasih.

@hsluoyz hal terakhir yang terjadi secara publik adalah pada 16 Maret tahun ini, saya percaya.

Hai,
Belum berhasil membuat garpu bekerja di windows?

Hai,

Saya akan tertarik untuk mengerjakan tiket ini.
Bagaimana kondisi pelabuhan saat ini?

Bagaimana kondisi pelabuhan saat ini?

PR #1468 digabungkan setahun yang lalu yang menambahkan pengujian pada AppVeyor di Windows, tetapi akun AppVeyor perlu diaktifkan sebelum dapat dijalankan.

Setelah itu, seseorang perlu mengulangi kegagalan yang terjadi saat pengujian Windows berjalan.

@edmorley saya akan mengurus appveyor hari ini.

@Sweenpet belum banyak. Hal pertama yang harus dilakukan adalah melihat hasil tes dan membuat tiket darinya.

Juga kita perlu memutuskan tentang ruang lingkup:

  • [ ] tidak menjalankan non WSL ? Apa yang hilang untuk iy?
  • [ ] dukungan cygwin?
  • [ ] native support : pengawasan seperti apa yang kita inginkan. Saya kira kita ingin itu berjalan sebagai layanan.

Saya mengusulkan untuk mendiskusikannya melalui IRC kadang-kadang besok jika Anda mau?

Saya menginstal appveyor di repositori:

https://ci.appveyor.com/project/benoitc/gunicorn

@benoitc , saya memiliki aplikasi (examples/flaskapp.py) dan semua tes berjalan di WSL, untuk Ubuntu 18.04 dan Python 3.6.5. Agaknya itu harus berfungsi untuk semua versi lain yang ditentukan dalam file tox. Fakta itu berjalan di WSL akan memecahkan sebagian besar masalah pengguna Windows yang saya bayangkan kecuali mereka tidak berjalan di Windows 10. Apakah Cygwin masih banyak digunakan?

Senang berdiskusi besok tentang dukungan asli di Windows, jam berapa yang cocok?

Akan membuat tiket itu besok juga, tampaknya terutama di sekitar modul dan soket Linux asli.

FWIW, saya menggunakan cygwin di windows

Jika Python tidak berjalan di Windows dengan benar (misalnya psycopg2, weasyprint dan yang tidak), mengapa Python masih mengklaim bahwa itu adalah lintas platform? Sejauh ini, itu bahkan tidak berjalan dengan baik di Windows 10.

@jtan4nih sikap itu tidak beralasan.

Python adalah lintas platform, gunicorn tidak.

maaf saya telah dilacak dengan buruk. Saya akan mengatakan jika ada yang ingin menjalankan gunicorn secara asli di windows, saya akan dengan senang hati menerima tambalan apa pun dan dan menjawab pertanyaan apa pun.

lihat cs01/gdbgui#18, mungkin membantu

Sudah 7 tahun, dan adakah keberuntungan untuk mewujudkannya?

saya mungkin memiliki beberapa siklus yang Anda habiskan untuk itu selama bulan Maret. Saya perlu menemukan
cara untuk mengeksekusi windows di suatu tempat. Anda sudah dapat menjalankannya di terminal
omong-omong.

juga siapa pun yang benar-benar menggunakan windows dapat membantu tentang topik itu.

Coba waitress .
Desain gunicorn adalah untuk memanfaatkan kernel Unix dan mirip Unix untuk membentuk server web.

melihat tutorial youtube tentang cara menyebarkan django di heroku menggunakan gunicorn benar-benar membuat saya bertanya-tanya bagaimana mungkin mereka melakukan itu, sementara saya masih terjebak dengan masalah gunicorn lol

Coba waitress .
Desain gunicorn adalah untuk memanfaatkan kernel Unix dan mirip Unix untuk membentuk server web.

Pelayan tidak mendukung multiprosesor yang tepat.

Apakah ada gambaran kasar bagaimana hal itu bisa dilakukan pada Windows untuk mendukung multiprocessing yang tepat?
Tahukah kita apa kendala utama selama ini untuk mewujudkannya?

saya mungkin memiliki beberapa siklus yang Anda habiskan untuk itu selama bulan Maret. Saya perlu menemukan cara untuk mengeksekusi windows di suatu tempat. Anda sudah dapat menjalankannya di terminal.

Bisakah VM dev Win10 menjadi solusi bagi Anda untuk menjalankan Windows dan memeriksa kompatibilitas gunicorn?

Mungkin kita bisa menggunakan pywin32 untuk windows daripada fnctl di windows, sepertinya mereka memiliki kemampuan penguncian file .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat