Gunicorn: Добавить поддержку Windows

Созданный на 1 мая 2013  ·  90Комментарии  ·  Источник: benoitc/gunicorn

Это связано с тем, что мы обсуждали на PyCon.

Improvement FeaturCore help wanted - Mailing List - Platforwindows

Самый полезный комментарий

@ jtan4nih такое отношение неуместно.

Python - кроссплатформенный, а Gunicorn - нет.

Все 90 Комментарий

протереть. планируется на R18.

Некоторые обновления по этому поводу:

  • Поддержка SOCKET налажена, ветка будет выложена онлайн на следующей неделе

ДЕЛАТЬ:

обрабатывать запуск / остановку / перезапуск службы, чтобы использовать gunicorn как полноценную службу Windows. Это как-то заменяет использование сигналов в unix.

поддержка наконец произойдет в R20 . Я создам новый PR, чтобы отслеживать развитие этой функции на следующей неделе.

Что нужно исправить:

  • адаптировать уведомления Worker к окнам
  • портировать сигнализацию в Windows: перезагрузить и повторно запустить
  • убедитесь, что сокеты могут быть унаследованы между процессами

Каков прогресс в добавлении поддержки Windows для Gunicorn ?. А точнее Как далеко ты от R20 ? У меня та же проблема, что и # 587

Медленный прогресс. Я хочу выпустить R19 с многопоточной работой сейчас. Я выложу версию в понедельник. поддержка Windows прибудет сразу после.

Доступна ли где-нибудь эта версия с поддержкой Windows?

Поддержка Windows будет в R20, так что я думаю, что пройдет некоторое время, пока у guincorn появится поддержка Windows ... Я создал виртуальную машину с Ubuntu, и это работает для меня ...

Просто любопытно, есть ли в этом прогресс. Для первого прохода даже не нужно быть быстрым; большим преимуществом будет просто возможность разрабатывать с Gunicorn в Windows и отправлять на сервер Linux (например, Heroku) без изменения конфигурации.

@robertlagrant, это в моем деле. Сначала мне нужно найти лицензию на Windows. R20 выйдет в октябре,

Как насчет образов виртуальных машин на modern.ie? Это бесплатно и законно
22 сентября 2014 г. в 15:30 «Бенуа Шено» [email protected] написал:

@robertlagrant https://github.com/robertlagrant это в моей задаче, пока
конец года. Сначала мне нужно найти лицензию на Windows.

-
Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/benoitc/gunicorn/issues/524#issuecomment -56372470.

Недавно я использовал изображения modern.ie для тестирования веб-приложения в IE8. Легко начать и отлично поработал.

@benoitc Если нужно, я полагаю, PSF может предоставить вам лицензию на Windows.

@benoitc есть ли для этого ветка WIP? Я не пользователь Windows, но могу взглянуть на это.

@berkerpeksag еще нет: / нам действительно нужно начать как можно скорее.

как @cyberdelia сказал, что мы можем попросить лицензию на Windows в PSF, которую проект Gunicorn может использовать для такой разработки. Мысли?

Это хорошая идея. https://www.python.org/psf/grants/ содержит всю информацию о грантовых предложениях.

Есть обновления по этому поводу?

Я также ищу обновления по этому поводу.

@berkerpeksag, давай как можно скорее поговорим о IRC, просто пинги меня иногда раньше, так как в эти дни я далеко от каких-либо мгновенных вещей :)

@benoitc есть какие-нибудь обновления по этому

@lealhugui, насколько мне известно, с тех пор не было никакого прогресса. В любом случае у меня был план:

  1. мы должны поместить пулемет в CI-систему, которая обрабатывает окна, чтобы знать, где он терпит неудачу
  2. запустите порт через новую библиотеку IPC (иногда в следующем месяце), чтобы начать работу с Windows

Иногда я могу ожидать релиза в марте. Возможно, раньше, но никаких обещаний :) Работа, конечно, может идти быстрее, если кто-то, кто знает окна лучше, чем я (подсказка, что я не использовал окна с 1995 года ...), может помочь!

@benoitc после середины января, я могу помочь (в основном тестирование или все, что вам нужно, и я могу помочь).

@lealhugui спасибо! Я предоставлю обновления как можно скорее

Надеюсь, все идет хорошо. У нас все еще в порядке с этим выпуском в марте?

@tannaalok вряд ли. Надеюсь, @benoitc сможет опубликовать работу IPC, и тогда, возможно, станет возможна поддержка Windows. Потребуется некоторое время, чтобы работа IPC приземлилась, а затем остальная часть работы Windows будет обнаружена, упорядочена и обработана. Сложно сказать.

@tilgovi, наконец, на следующей неделе работа IPC появится в ветке :)

Теперь о версии для Windows. Вот план, который у меня в голове. Первое, что нужно сделать, это подключить Gunicorn к Windows CI, чтобы начать замечать проблемы. Затем есть 2 сценария: запуск Gunicorn в cygwin или запуск Gunicorn в простых окнах. Оба могут вызвать разные результаты, и их необходимо протестировать. Насколько мне известно, портативность Gunicorn заключается в следующем:

  • обработка сигналов : сигналы работают по-разному в окнах, и нам нужно найти способ предоставить следующие возможности: http://docs.gunicorn.org/en/stable/signals.html
  • нерест рабочих : может быть какая-то разница в окнах. Работа IPC устранит использование временного файла, чтобы проверить, живы ли рабочие, заменив его конвейером. Эта часть должна быть совместима
  • worker поддерживает : я еще не уверен, как ведут себя рабочие gevent, eventlet и tornado в окнах. в любом случае это хороший призыв разделить их за пределами пулеметчика. Так что мы можем модернизировать их по отдельности. Рабочий процесс gthread может работать прозрачно, если мы перейдем на python 3. что и будет.

Я что-нибудь пропустил? Любая помощь приветствуется, я сам не использую Windows daily. Так что приветствуется любой, кто имеет опыт работы с окнами и хочет взять на себя инициативу в этой части, чтобы сделать платформу Windows первым гражданином в Gunicorn!

Python 3.5 добавляет полезную функцию для обработки сигналов в Windows: signal.set_wakeup_fd () теперь принимает дескриптор сокета в Windows.
https://docs.python.org/dev/library/signal.html#signal.set_wakeup_fd

как @cyberdelia сказал, что мы можем попросить лицензию на Windows в PSF

Microsoft предоставляет бесплатные лицензии MSDN для разработчиков ядра Python. Например, как основной разработчик у меня есть доступ к Visual Studio 2015.

@haypo спасибо. На самом деле это тоже можно использовать для разбудить арбитра в unix ... Очень полезно.

Если основной разработчик может помочь, тогда это будет полезно :) Есть идеи, как попросить его, когда это внешний проект?

У вас также есть WSL (Windows для Linux) для поддержки возможностей Windows.

Есть ли способ, которым человек с ограниченными знаниями Linux и стрельбой может помочь перенести это на Windows, или проблемы слишком нетривиальны?

Почему этот вопрос закрыт? Я не могу найти информацию о работе с окнами

Этот вопрос все еще открыт.

@DominikDitoIvosevic, он все еще открыт. Иногда на этой неделе я буду предоставлять какой-то план действий.

Сегодня я наткнулся на чтение о совместимости. Я смотрел свою работу на № 1310. Я обработал FD_CLOEXEC иначе, чем библиотеки C. systemd. Это привело меня к PEP 446 , размышляя о поведении fork и помня, что в Windows нет fork .

Для начала вот несколько вещей, которые нам понадобятся в дорожной карте:

  • Настроить CI
  • Замените os.fork , вероятно, на multiprocessing.Process
  • Замените WorkerTemp на multiprocessing.Pipe
  • Добавить совместимые версии помощников наследования FD
  • (найдите другие, вероятно, более мелкие вещи и исправьте их)

Застрял Windows на работе, это действительно помогло бы мне. С нетерпением жду этой возможности!

Я понимаю, что это может быть не ответ, но я считаю, что официантка действительно хороша для
Windows.

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

Застрял Windows на работе, это действительно помогло бы мне. С нетерпением жду
эта особенность!

-
Вы получаете это, потому что подписаны на эту ветку.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/benoitc/gunicorn/issues/524#issuecomment -238351654,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AALnfBAXBrmPlU1JPx6RXI0vFQPLmBlyks5qd4XhgaJpZM4AnyCw
.

Искренне Ваш,
Глеб

@ chester89 это, конечно, не совсем уместно ....

@hirolau Я только что получил лицензию разработчика MSDN в прошлом месяце, поэтому я могу легко протестировать ее на Windows. Надеюсь, @berkerpeksag сможет помочь с тестами. Я составлю план, и мы обязательно сделаем его доступным в следующем месяце :)

@benoitc - бесстыдная шишка!

Я обычно использую окна, поэтому я буду очень признателен за работу с окнами. Спасибо !
Есть ли у вас планы, когда он будет готов?

есть новости по этому поводу? мы вынуждены использовать Windows в производстве. Если работа зашла в тупик, не могли бы вы поделиться черновиком плана? ваше здоровье!

@cmorgan Здесь

@benoitc есть новости по этому

всем привет
Есть новости по этому поводу?

Я уверен, что к проблеме будут добавлены какие-либо обновления. Нет необходимости запрашивать обновления.

Всем привет,

Извините, что не ответил раньше. В эти дни я был очень занят. Так что, похоже, многие люди ждут этой функции, пора ее реализовать. Я составлю план к воскресенью по этому поводу и постараюсь найти способ осуществить это :)

Я считаю, что разделение этого на более мелкие и более действенные задачи может быть лучшим способом продвижения вперед.

Таким образом, я подал № 1467 для части «настроить CI» с PR № 1468 для добавления конфигурации AppVeyor. Пример тестового прогона можно увидеть здесь:
https://ci.appveyor.com/project/edmorley/gunicorn/build/windows-ci.18

В дополнение к более значительным изменениям, упомянутым в предыдущих комментариях (сигналы, рабочий IPC, обработка отсутствия вилки и т. Д.), Необходимо решить следующее, прежде чем тесты вообще будут запущены:

@edmorley спасибо, посмотрю как можно скорее :)

Когда я смогу уважать эту функцию? Эта проблема возникла около четырех лет назад。

Привет,
Мы также надеемся, что у нас будет эта функциональность, есть ли у нас какие-либо идеи, когда это может начаться?

Привет, когда это будет сделано? :)

Если кто-то хочет помочь, решение любых проблем, обнаруженных @edmorley , было бы полезным PR.

Имейте в виду, что некоторые вещи могут измениться более резко, чтобы это стало возможным.

Для этого сейчас нет графика. Если вы хотите помочь, IRC может быть лучшим местом, чтобы поговорить об этом или открыть более мелкие вопросы для отдельных рабочих элементов.

Подпишитесь на рассылку этого выпуска, если хотите получать уведомления о прогрессе. Прямо сейчас нет графика.

FWIW, Gunicorn работает в Cygwin под Windows. Я знаю, что это не очень полезно, но вот оно ...

@Zorlin Я не могу заставить его работать с Cygwin в Windows. Я пробовал делать пример из официальной документации

$ 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

Я продолжаю получать эту ошибку в Cygwin

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

это также работает в подсистеме Windows 10, так что, может быть, это больше не нужно?

Для поддержки Windows нам потребуется следующее:

  • [] перейдите на python3, чтобы упростить код
  • [] используйте CreateProcessW для создания процесса вместо os.fork (может быть, повторно использовать абстракцию _winapi, используемую в многопроцессорной обработке?
  • [] сокеты, я считаю, что уже есть некоторый код, перенесенный для asyncio и доступный в python 3, который можно использовать для gthreads
  • [] разрешения. вместо этого мы должны поддерживать способ, которым Windows разрешает запуск служб для демонизации. также привилегии должны обрабатываться по-другому

(возможно, повторно использовать абстракцию _winapi, используемую в многопроцессорной обработке?

Кстати, многопроцессорность использует CreateProcess в popen_spawn_win32.py и не является частью процесса обратной совместимости Python, поскольку это внутренний модуль.

Всем привет! Как продвигается этот вопрос? Есть ли у нас какие-то сроки завершения? Спасибо!

@bartmika no. Контрольной даты не будет. Как сказал Бенуа, у нас много работы. Мы приветствуем помощь. Как я уже сказал выше, подпишитесь на этот выпуск, чтобы получать обновления. Мы будем обновлять, когда будет чем поделиться.

Спасибо @tilgovi ,

Я хотел бы обсудить возможное назначение награды за закрытие этого вопроса. Может ли разработчик из Gunicorn связаться со мной по адресу bart [at] simalam.com

Спасибо!

@bartmika, извини, свяжусь с вами завтра, как только @tilgovi и @berkerpeksag . В любом случае, хорошая идея.

@benoitc просто хотел проверить статус Gunicorn для Windows. Я вижу, что даты выпуска еще нет, но хотел посмотреть, есть ли что-нибудь бета-версия, которую я могу протестировать в Windows.

Работа @jmaulsby еще не началась. Я медленно возвращаюсь к этому. Я планирую выпустить следующий крупный выпуск иногда в декабре, включая некоторую поддержку Windows.

@bartmika В эти дни меня

Так есть ли теперь поддержка Windows ?. Это декабрь

С нетерпением жду этого! Это январь.

@benoitc Есть обновления?

Привет,

Просто проверяюсь снова, есть что-нибудь новенькое?

Спасибо
Майк

Привет

Могу ли я сейчас использовать Apache Airflow в Windows?

Спасибо
Судхакар

Привет,

Я пытаюсь выполнить следующую команду, но получаю эту ошибку. Вы можете помочь с этим?

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

В качестве взлома я создал файл fcntl.py с приведенным ниже содержимым, скомпилировал его как файл fcntl.cpython-36.pyc , поместил его в папку __pycache__ , перезапустил терминал и выполнил команду gunicorn --bind 0.0.0.0:8000 hello-world:app , но все равно не повезло.

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

Получил это из https://stackoverflow.com/questions/11087682/does-gunicorn-run-on-windows

Было бы полезно, если кто-нибудь может предложить лучшую альтернативу Gunicorn для Windows на данный момент?

Обновление: сейчас я использую официантку , очень хорошая альтернатива :)

Прошло 5 лет и есть ли обновления по этому поводу? Спасибо.

@hsluoyz , я думаю, последнее, что произошло публично, произошло 16 марта этого года.

Привет,
Еще не удалось заставить вилку работать в Windows?

Привет,

Мне было бы интересно поработать над этим билетом.
В каком состоянии порт сейчас?

В каком состоянии порт сейчас?

PR # 1468 был объединен год назад, что добавило тестирование AppVeyor в Windows, но учетную запись AppVeyor необходимо активировать, прежде чем она будет запущена.

После этого кому-то нужно перебрать сбои, возникающие при выполнении тестов Windows.

@edmorley Сегодня я позабочусь об аппвейоре.

@Sweenpet пока ничего особенного. Первое, что нужно сделать, это посмотреть результаты теста и создать из них тикеты.

Также нам нужно определиться с объемом:

  • [] это ru не WSL? Чего не хватает для iy?
  • [] поддержка cygwin?
  • [] нативная поддержка: какой вид контроля мы хотим. Я думаю, мы хотим, чтобы он работал как служба.

Я предлагаю иногда обсудить это через IRC завтра, если хотите?

Я установил appveyor в репозиторий:

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

@benoitc , у меня есть приложение (examples / flaskapp.py) и все тесты, запущенные на WSL, для Ubuntu 18.04 и Python 3.6.5. Предположительно, он должен работать для всех остальных версий, указанных в файле tox. Тот факт, что он работает на WSL, решит большинство проблем пользователей Windows, которые я могу себе представить, если они не работают на Windows 10. Широко ли используется Cygwin по-прежнему?

Рады завтра обсудить встроенную поддержку Windows, в какое время?

Завтра тоже создадим эти билеты, в основном они связаны с собственными модулями и сокетами Linux.

FWIW, я использую cygwin в Windows

Если Python не работает должным образом в Windows (например, psycopg2, weasyprint и т. Д.), Почему, черт возьми, Python все еще утверждает, что он кроссплатформенный? Пока что он даже не работает должным образом в Windows 10.

@ jtan4nih такое отношение неуместно.

Python - кроссплатформенный, а Gunicorn - нет.

извините, меня ужасно отвлекли. Я бы сказал, что если кто-то захочет запустить Gunicorn на Windows изначально, я буду рад принять любой патч и ответить на любые вопросы.

см. cs01 / gdbgui # 18, может быть, поможет

Прошло 7 лет, и есть ли удача в этом?

Я могу потратить на это какой-то цикл во время марша. Мне нужно будет найти
способ выполнить окна где-нибудь. вы уже можете запустить его в терминале
в любом случае.

также любой, кто действительно использует окна, может помочь по этой теме.

Попробуйте waitress .
gunicorn использует преимущества Unix и Unix-подобных ядер для создания веб-сервера.

глядя на эти уроки на YouTube о том, как развернуть django на heroku с помощью Gunicorn, действительно заставляет меня задаться вопросом, как они могут это сделать, в то время как я все еще застрял с проблемой Gunicorn, лол

Попробуйте waitress .
gunicorn использует преимущества Unix и Unix-подобных ядер для создания веб-сервера.

Официантка не поддерживает правильную многопроцессорность.

Есть ли приблизительное представление о том, как это можно сделать в Windows для поддержки правильной многопроцессорной обработки?
Знаем ли мы, какие основные препятствия на пути к реализации этого пока существуют?

Я могу потратить на это какой-то цикл во время марша. Мне нужно будет где-нибудь найти способ запускать окна. в любом случае вы уже можете запустить его в терминале.

Может ли виртуальная машина разработчика Win10 стать для вас решением для запуска Windows и проверки совместимости с Gunicorn?

Возможно, мы можем использовать pywin32 для Windows вместо fnctl в Windows, кажется, у них есть возможность блокировки файлов.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги