Gunicorn: Windows-Unterstützung hinzufügen

Erstellt am 1. Mai 2013  ·  90Kommentare  ·  Quelle: benoitc/gunicorn

Dies hängt mit den Dingen zusammen, die wir auf der PyCon besprochen haben

Improvement FeaturCore help wanted - Mailing List - Platforwindows

Hilfreichster Kommentar

@jtan4nih diese Einstellung ist unangebracht.

Python ist plattformübergreifend, Gunicorn nicht.

Alle 90 Kommentare

wischen. geplant für R18.

Einiges Update dazu:

  • SOCKET-Support ist fertig, nächste Woche wird eine Filiale online gestellt

MACHEN:

Behandeln Sie den Start/Stopp/Neustart des Dienstes, um Gunicorn als vollständigen Windows-Dienst zu verwenden. Es ersetzt irgendwie die Verwendung von Signalen unter Unix.

der Support wird endlich in R20 erfolgen . Ich werde nächste Woche die neue PR erstellen, um die Entwicklung dieses Features zu verfolgen.

Dinge zu beheben sind:

  • Worker-Benachrichtigungen an Windows anpassen
  • die Signalisierung auf Windows portieren: neu laden und erneut ausführen
  • Stellen Sie sicher, dass Sockets zwischen Prozessen vererbt werden können

Wie ist der Fortschritt beim Hinzufügen von Windows-Unterstützung für Gunicorn?. Oder eher Wie weit sind Sie von R20 entfernt ? Ich habe das gleiche Problem wie #587

Langsamer Fortschritt. Ich möchte R19 jetzt mit der Thread-Arbeit veröffentlichen. Ich werde am Montag eine Version veröffentlichen. die Windows-Unterstützung wird gleich danach eintreffen.

Ist diese von Windows unterstützte Version irgendwo verfügbar?

Windows-Unterstützung wird in R20 sein, also wird es wohl noch eine Weile dauern, bis Guincorn Windows-Unterstützung haben wird... Ich habe eine VM mit Ubuntu erstellt, und das funktioniert für mich.....

Bin nur neugierig, ob es Fortschritte gibt. Als erster Durchgang muss es nicht einmal schnell sein; Ein großer Vorteil wird sein, einfach mit Gunicorn unter Windows entwickeln und auf einen Linux-Server (zB Heroku) pushen zu können, ohne die Konfiguration zu ändern.

@robertlagrant es steht auf meinem todo. Ich muss zuerst eine Windows-Lizenz finden. R20 erscheint im Oktober,

Wie sieht es mit den VM-Images bei modern.ie aus? Diese sind kostenlos und legal
Am 22. September 2014 um 15:30 Uhr schrieb "Benoit Chesneau" [email protected] :

@robertlagrant https://github.com/robertlagrant es steht auf meiner todo bis
das Ende des Jahres. Ich muss zuerst eine Windows-Lizenz finden.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/benoitc/gunicorn/issues/524#issuecomment -56372470.

Ich habe vor kurzem modern.ie-Bilder verwendet, um eine Web-App im IE8 zu testen. Einfach loszulegen und hat super funktioniert.

@benoitc Ich glaube, dass die PSF Ihnen bei Bedarf eine Windows-Lizenz zur Verfügung stellen kann.

@benoitc gibt es dafür einen WIP-Zweig? Ich bin kein Windows-Benutzer, aber ich kann mir das ansehen.

@berkerpeksag nein noch nicht :/ wir sollten wirklich so

Wie @cyberdelia sagte, könnten wir bei der PSF eine Windows-Lizenz anfordern, die das Gunicorn-Projekt für eine solche Entwicklung verwenden könnte. Die Gedanken?

Es ist eine gute Idee. https://www.python.org/psf/grants/ enthält alle Informationen zu Förderanträgen.

Irgendwelche Updates dazu?

Dazu suche ich auch Updates.

@berkerpeksag lass uns so pinge mich nur manchmal vorher an, da ich heutzutage von allem weg bin :)

@benoitc ein Update zu diesem Thema?

@lealhugui soweit ich weiß gab es seitdem keine Fortschritte. Jedenfalls kam ich mit einem Plan:

  1. Wir sollten Gunicorn in ein CI-System stecken, das mit Fenstern umgeht, um zu wissen, wo es versagt
  2. Starten Sie die Portierung über die neue IPC-Bibliothek (manchmal nächsten Monat), um die Arbeit an Windows zu beginnen

Ich kann mit einer Veröffentlichung manchmal im März rechnen. Möglicherweise früher, aber ohne Versprechen :) Die Arbeit kann natürlich schneller gehen, wenn jemand helfen kann, der Windows tatsächlich besser kennt als ich (Hinweis, ich benutze Windows seit 1995 nicht mehr...)!

@ benoitc nach Mitte Januar kann ich helfen (im Grunde testen oder alles, was Sie brauchen und ich könnte helfen).

@lealhugui danke! Ich werde Updates so schnell wie möglich bereitstellen

Hoffentlich läuft es gut. Sind wir mit dieser Veröffentlichung im März noch gut?

@tannaalok unwahrscheinlich. Hoffentlich kann @benoitc die IPC-Arbeit veröffentlichen und dann ist vielleicht Windows-Support möglich. Es wird einige Zeit dauern, bis die IPC-Arbeiten landen, dann wird der Rest der Windows-Arbeit entdeckt, sortiert und bearbeitet. Es ist sehr schwer zu sagen.

@tilgovi die IPC-Arbeit wird manchmal nächste Woche endlich in einer Filiale landen :)

Nun zur Windows-Version, hier ist der Plan, den ich im Kopf habe. Das erste, was Sie tun müssen, wäre, Gunicorn an ein Windows-CI anzuschließen, um Probleme zu bemerken. Es gibt dann 2 Szenarien, Gunicorn in Cygwin ausführen oder Gunicorn in einfachen Fenstern ausführen. Die beiden können unterschiedliche Ergebnisse auslösen und müssen getestet werden. Soweit ich weiß, sind die Dinge, um Gunicorn tragbar zu machen, die folgenden:

  • Signalbehandlung : Signale funktionieren unter Windows anders und wir müssen einen Weg finden, die folgenden Funktionen bereitzustellen :
  • Arbeiter laichen : Es gibt vielleicht einen Unterschied bei Windows. Die IPC-Arbeit wird die Verwendung einer temporären Datei entfernen, um zu überprüfen, ob die Arbeiter am Leben sind, und sie durch eine Pipe ersetzen. Dieses Teil sollte kompatibel gemacht werden
  • worker unterstützt : Ich bin mir noch nicht sicher, wie sich die Gevent-, Eventlet- und Tornado-Worker unter Windows verhalten. Dies ist sowieso ein guter Anruf, um sie außerhalb von Gunicorn zu teilen. So können wir sie auseinander upgraden. Der gthread-Worker kann transparent arbeiten, wenn wir zu Python 3 wechseln, was der Fall sein wird.

Habe ich etwas vergessen? Jede Hilfe ist willkommen, ich bin selbst kein Windows-Benutzer. Jeder, der Erfahrung mit Windows hat und dabei die Führung übernehmen möchte, um die Windows-Plattform zu einem ersten Bürger in Gunicorn zu machen, ist willkommen!

Python 3.5 fügt eine nützliche Funktion hinzu, um Signale unter Windows zu verarbeiten: signal.set_wakeup_fd() akzeptiert jetzt ein Socket-Handle unter Windows.
https://docs.python.org/dev/library/signal.html#signal.set_wakeup_fd

wie @cyberdelia sagte, wir könnten bei der PSF um eine Windows-Lizenz bitten

Microsoft bietet kostenlose MSDN-Lizenzen für Python-Kernentwickler. Als Core-Entwickler habe ich beispielsweise Zugriff auf Visual Studio 2015.

@haypo danke. Eigentlich könnte man damit auch den Arbiter unter Unix wecken... Sehr nützlich.

Wenn ein Core-Entwickler helfen könnte, dann wäre das nützlich :) Irgendeine Idee, wie man nach einem fragen kann, wenn es sich um ein externes Projekt handelt?

Sie haben auch die WSL (Windows für Linux) für die Windows-Fähigkeit

Kann eine Person mit begrenzten Linux- und Gunicorn-Kenntnissen helfen, dies auf Windows zu portieren, oder sind die Probleme zu nicht trivial?

Warum ist dieses Thema geschlossen? Ich kann keine Informationen zum Arbeiten unter Windows finden

Dieses Thema ist noch offen.

@DominikDitoIvosevic es ist noch offen. Ich werde diese Woche manchmal eine Art Roadmap bereitstellen.

Ich bin heute in einige Kompatibilitätslektüre gestolpert. Ich habe mir meine Arbeit zu #1310 angesehen. Ich habe FD_CLOEXEC anders behandelt als systemd C-Bibliotheken. Das führte mich zu PEP 446 , wobei ich über das Verhalten von fork nachdachte und mich daran erinnerte, dass es unter Windows kein fork .

Um mit den Dingen zu beginnen, sind hier ein paar Dinge, die wir auf der Roadmap benötigen:

  • CI einrichten
  • Ersetzen Sie os.fork , wahrscheinlich durch multiprocessing.Process
  • Ersetzen Sie WorkerTemp durch multiprocessing.Pipe
  • Kompatibilitätsversionen von FD-Vererbungshilfen hinzufügen
  • (finde andere, wahrscheinlich kleinere Dinge und repariere sie)

Wenn ich bei der Arbeit mit Windows feststecke, würde mir das wirklich helfen. Ich freue mich sehr auf diese Funktion!

Ich weiß, dass dies vielleicht keine Antwort ist, aber ich finde Kellnerin wirklich gut für
Fenster.

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

Wenn ich bei der Arbeit mit Windows feststecke, würde mir das wirklich helfen. Mit Spannung
Dieses Feature!


Sie erhalten dies, weil Sie diesen Thread abonniert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/benoitc/gunicorn/issues/524#issuecomment -238351654,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AALnfBAXBrmPlU1JPx6RXI0vFQPLmBlyks5qd4XhgaJpZM4AnyCw
.

Hochachtungsvoll,
Gleb

@chester89 das ist dort sicher nicht wirklich angebracht....

@hirolau Ich habe letzten Monat eine MSDN-Entwicklerlizenz erhalten, damit ich sie einfach unter Windows testen kann. Hoffentlich kann @berkerpeksag bei Tests helfen. Ich werde einen Plan entwerfen, damit wir ihn manchmal nächsten Monat zur Verfügung haben :)

@benoitc - schamlose Beule!

Ich verwende normalerweise Windows, daher wird die Arbeit mit Gunicorn an Fenstern sehr geschätzt. Vielen Dank !
Hast du Pläne, wann es fertig sein wird?

Gibt es darüber irgendwelche Neuigkeiten? Wir sind gezwungen, Windows in der Produktion zu verwenden. Wenn die Arbeit ins Stocken geraten ist, könnten Sie den Entwurf des Plans teilen? Danke schön!

@cmorgan Die gleiche Situation hier. Hat jemand Updates zu diesem Thema?

@benoitc gibt es dazu Neuigkeiten?

Hallo alle zusammen
Gibt es darüber irgendwelche Neuigkeiten?

Ich bin sicher, dass dem Problem alle Updates hinzugefügt werden. Es besteht keine Notwendigkeit, nach Updates zu fragen.

Hallo zusammen,

Entschuldigung, dass ich vorher nicht geantwortet habe. Ich war in diesen Tagen ziemlich beschäftigt. Es scheint also, dass viele Leute auf dieses Feature warten, es ist an der Zeit, es zu schaffen. Ich werde bis Sonntag einen Plan darüber entwerfen und einen Weg finden, es zu verwirklichen :)

Ich glaube, dass die Aufteilung in kleinere, besser umsetzbare Aufgaben der beste Weg sein könnte.

Als solches habe ich #1467 für den Teil "CI einrichten" mit PR #1468 zum Hinzufügen einer AppVeyor-Konfiguration eingereicht. Ein Beispiel-Testlauf ist hier zu sehen:
https://ci.appveyor.com/project/edmorley/gunicorn/build/windows-ci.18

Zusätzlich zu den größeren Änderungen, die in den vorherigen Kommentaren erwähnt wurden (Signale, Arbeiter-IPC, Umgang mit fehlenden Gabeln usw.), müssen folgende Punkte gelöst werden, bevor die Tests überhaupt ausgeführt werden:

@edmorley danke, werde es mir so

Wann kann ich diese Funktion respektieren? Diese Ausgabe begann vor etwa vier Jahren。

Hi,
Wir wollen diese Funktion auch haben, haben wir eine Idee, wann dies der Fall sein könnte?

Hallo, wann wird das bearbeitet? :)

Wenn jemand helfen möchte, wäre es hilfreich, eines der Probleme anzugehen , die

Beachten Sie, dass sich einige Dinge dramatischer ändern können, um dies zu ermöglichen.

Dafür gibt es derzeit keinen Zeitplan. Wenn Sie helfen möchten, ist IRC möglicherweise der beste Ort, um darüber zu chatten oder kleinere Probleme für einzelne Arbeitselemente zu öffnen.

Bitte abonnieren Sie diese Ausgabe, wenn Sie über den Fortschritt informiert werden möchten. Im Moment gibt es keine Zeitleiste.

FWIW, Gunicorn funktioniert in Cygwin unter Windows. Ich weiß, das ist nicht sehr hilfreich, aber da ist es...

@Zorlin Ich kann es mit Cygwin unter Windows nicht zum offiziellen Dokumentation zu machen

$ 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

Ich bekomme immer diesen Fehler in Cygwin

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

dies läuft auch im Subsystem von Windows 10, also wird es vielleicht nicht mehr benötigt?

Um Windows nativ zu unterstützen, benötigen wir Folgendes:

  • [ ] gehe zu python3 um den Code zu vereinfachen
  • [ ] Verwenden Sie CreateProcessW , um einen Prozess anstelle von os.fork zu erzeugen (vielleicht Wiederverwendung der _winapi-Abstraktion, die in Multiprocessing verwendet wird?
  • [ ] Sockets Ich glaube, es gibt bereits Code, der für Asyncio portiert und in Python 3 verfügbar ist, der für Gthreads verwendet werden kann
  • [ ] Berechtigungen. wir sollten stattdessen die Art und Weise unterstützen, wie Windows den Start der Dienste zur Dämonisierung ermöglicht. auch Privilegien sollten anders gehandhabt werden

(Vielleicht die Wiederverwendung der _winapi-Abstraktion, die in Multiprocessing verwendet wird?

Übrigens, Multiprocessing verwendet CreateProcess in popen_spawn_win32.py und ist nicht Teil des Abwärtskompatibilitätsprozesses von Python, da es sich um ein internes Modul handelt.

Hallo alle zusammen! Wie sind die Fortschritte bei diesem Thema? Haben wir Zieltermine für die Fertigstellung in Sicht? Vielen Dank!

@bartmika Nr. Es wird kein Zieldatum geben. Wir haben viel zu tun, wie Benoitc beschrieben hat. Wir freuen uns über Hilfe. Wie oben erwähnt, abonnieren Sie diese Ausgabe für Updates. Wir werden aktualisieren, wenn es etwas zu teilen gibt.

Danke @tilgovi ,

Ich würde gerne darüber diskutieren, ob möglicherweise ein Kopfgeld auf das Schließen dieses Themas ausgesetzt wird. Möge ein Entwickler von Gunicorn mich unter bart [ at ] simalam.com kontaktieren

Dankeschön!

@bartmika sorry war eine arbeitsreiche Woche. Ich melde mich morgen, sobald ich Kontakt mit @tilgovi & @berkerpeksag hatte . Gute Idee jedenfalls.

@benoitc wollte nur den Status von Gunicorn für Windows überprüfen. Ich sehe, dass es noch kein Veröffentlichungsdatum gibt, wollte aber sehen, ob es eine Beta gibt, die ich unter Windows testen kann.

Die Arbeit von

@bartmika Ich wurde in diesen Tagen

Gibt es jetzt also eine Unterstützung für Windows?. Es ist Dezember

Sich auf etwas freuen! Es ist Januar.

@benoitc Irgendwelche Updates?

Hi,

Einfach nochmal einchecken, gibt es etwas Neues?

Vielen Dank
Mike

Hi

Kann ich Apache Airflow jetzt unter Windows verwenden?

Vielen Dank
Sudhakar

Hi,

Ich versuche den folgenden Befehl, aber ich erhalte diesen Fehler. Können Sie dabei helfen?

(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'

Als Hack habe ich eine fcntl.py Datei mit dem folgenden Inhalt erstellt, sie als fcntl.cpython-36.pyc Datei kompiliert, im Ordner __pycache__ abgelegt, das Terminal neu gestartet und den Befehl gunicorn --bind 0.0.0.0:8000 hello-world:app , aber immer noch kein Glück.

fcntl.py-Inhalt:

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

Habe das von https://stackoverflow.com/questions/11087682/does-gunicorn-run-on-windows

Wäre hilfreich, könnte jemand die derzeit beste Gunicorn-Alternative für Windows vorschlagen?

Update: Ich benutze jetzt Kellnerin , sehr gute Alternative :)

Es ist 5 Jahre her und gibt es ein Update zu diesem? Vielen Dank.

@hsluoyz Das letzte, was öffentlich passiert ist, war am 16. März dieses Jahres, glaube ich.

Hi,
Noch kein Glück damit, die Gabel in Windows zum Laufen zu bringen?

Hi,

Ich hätte Interesse an diesem Ticket zu arbeiten.
Wie ist der aktuelle Stand des Hafens?

Wie ist der aktuelle Stand des Hafens?

PR #1468 wurde vor einem Jahr zusammengeführt, wodurch Tests für AppVeyor unter Windows hinzugefügt wurden, aber das AppVeyor-Konto muss aktiviert werden, bevor es ausgeführt werden kann.

Danach muss jemand die Fehler durchlaufen, die bei den Windows-Testläufen auftreten.

@edmorley Ich kümmere mich heute um Appveyor.

@ Sweenpet noch nicht viel. Als erstes müssen Sie sich die Testergebnisse ansehen und daraus Tickets erstellen.

Außerdem müssen wir uns über den Umfang entscheiden:

  • [ ] läuft es nicht WSL ? Was fehlt für iy?
  • [ ] Cygwin-Unterstützung?
  • [ ] native Unterstützung: welche Art von Betreuung wir wünschen. Ich denke, wir wollen, dass es als Dienst läuft.

Ich schlage vor, das morgen manchmal über IRC zu diskutieren, wenn Sie wollen?

Ich habe appveyor im Repository installiert:

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

@ benoitc , ich habe die Anwendung (examples/flaskapp.py) und alle Tests, die auf WSL für Ubuntu 18.04 und Python 3.6.5 ausgeführt werden. Vermutlich sollte es für alle anderen in der Tox-Datei angegebenen Versionen funktionieren. Die Tatsache, dass es auf WSL läuft, würde die meisten Probleme von Windows-Benutzern lösen, die ich mir vorstellen würde, es sei denn, sie laufen nicht unter Windows 10. Wird Cygwin immer noch häufig verwendet?

Ich freue mich, morgen eine Diskussion über die native Unterstützung für Windows zu führen. Welche Zeit passt?

Werde diese Tickets morgen auch erstellen, scheint sich hauptsächlich um native Linux-Module und -Sockets zu drehen.

FWIW, ich benutze Cygwin unter Windows

Wenn Python unter Windows nicht richtig läuft (zB psycopg2, weasyprint und was nicht), warum zum Teufel behauptet Python immer noch, dass es plattformübergreifend ist? Bisher läuft es nicht einmal richtig unter Windows 10.

@jtan4nih diese Einstellung ist unangebracht.

Python ist plattformübergreifend, Gunicorn nicht.

Entschuldigung, dass ich schrecklich auf die Spur gekommen bin. Ich würde sagen, wenn jemand Gunicorn nativ auf Windows ausführen möchte, würde ich gerne jeden Patch akzeptieren und alle Fragen beantworten.

siehe cs01/gdbgui#18, vielleicht hilft

Es ist 7 Jahre her und hast du Glück, es zu verwirklichen?

Ich habe möglicherweise einen Zyklus, den Sie im März dafür ausgeben. Ich muss eine finden
Möglichkeit, Windows irgendwo auszuführen. Sie können es bereits im Terminal ausführen
ohnehin.

auch jeder, der tatsächlich Windows verwendet, kann zu diesem Thema helfen.

Versuchen Sie es mit waitress .
gunicorn Design von

Wenn ich mir diese Youtube-Tutorials ansehe, wie man Django auf Heroku mit Gunicorn einsetzt, frage ich mich wirklich, wie es ihnen möglich ist, das zu tun, während ich immer noch mit dem Gunicorn-Problem feststecke lol

Versuchen Sie es mit waitress .
gunicorn Design von

Kellnerin unterstützt kein richtiges Multiprocessing.

Gibt es eine ungefähre Idee, wie es unter Windows gemacht werden könnte, um die richtige Multiprocessing zu unterstützen?
Wissen wir, was bisher die größten Hindernisse für die Umsetzung sind?

Ich habe möglicherweise einen Zyklus, den Sie im März dafür ausgeben. Ich muss eine Möglichkeit finden, Windows irgendwo auszuführen. Sie können es sowieso bereits im Terminal ausführen.

Könnten die Win10-Entwicklungs-VMs eine Lösung für Sie sein, um Windows auszuführen und die Gunicorn-Kompatibilität zu überprüfen?

Vielleicht können wir pywin32 für Windows anstelle von fnctl für Windows verwenden, es scheint, dass sie Dateisperrfunktionen haben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen