ããã¯ãPyConã§è©±ãåã£ãããšã«é¢é£ããŠããŸã
ã¯ã€ãã R18ã§èšç»ãããŠããŸãã
ããã«é¢ããããã€ãã®æŽæ°ïŒ
TODOïŒ
ãµãŒãã¹ã®éå§/åæ¢/åéãåŠçããŠãgunicornãå®å šãªWindowsãµãŒãã¹ãšããŠäœ¿çšããŸãã ããã¯ã©ããããããunixã®äžã§ä¿¡å·ã®äœ¿çšã眮ãæããŠããŸãã
ãµããŒãã¯æçµçã«R20ã§è¡ãããŸãã æ¥é±ããã®æ©èœã®éçºã远跡ããããã«æ°ããPRãäœæããŸãã
ä¿®æ£ãããã®ã¯æ¬¡ã®ãšããã§ãã
gunicornã®WindowsãµããŒãã®è¿œå ã®é²æç¶æ³ã¯ïŒ ãšãããã R20ããã©ããããé¢ããŠããŸããïŒ ïŒ587ãšåãåé¡ãçºçããŠããŸã
é²è¡ãé ãã ã¹ã¬ããåãããäœæ¥ã§R19ããªãªãŒã¹ããããšæããŸãã æææ¥ã«ããŒãžã§ã³ãããã·ã¥ããŸãã WindowsãµããŒãã¯ããã«å°çããŸãã
ãã®Windowsã§ãµããŒããããŠããããŒãžã§ã³ã¯ã©ããã§å ¥æã§ããŸããïŒ
Windowsã®ãµããŒãã¯R20ã§è¡ãããã®ã§ãguincornãWindowsããµããŒãããããã«ãªããŸã§ã«ã¯ãã°ããæéãããããšæããŸã... Ubuntuã§VMãäœæããŸããããããã§ããŸããããŸãã
ããã®é²æ©ã«ã€ããŠãã èå³ããããŸãã æåã®ãã¹ãšããŠãé«éã§ããå¿ èŠã¯ãããŸããã 倧ããªå©ç¹ã¯ãæ§æãå€æŽããã«ãWindowsäžã®Gunicornã§éçºããLinuxãµãŒããŒïŒHerokuãªã©ïŒã«ããã·ã¥ã§ããããšã§ãã
@robertlagrantããã¯ç§ã®
modern.ieã®VMã€ã¡ãŒãžã¯ã©ãã§ããïŒ ãããã¯ç¡æã§åæ³ã§ã
2014幎9æ22æ¥ååŸ3æ30åããBenoitChesneauã [email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
@robertlagranthttps ïŒ//github.com/robertlagrantããã¯ç§ã®ä»äºã§ã
幎æ«ã æåã«Windowsã©ã€ã»ã³ã¹ãèŠã€ããå¿ èŠããããŸããâ
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/benoitc/gunicorn/issues/524#issuecomment-56372470 ã
æè¿ãmodern.ieã€ã¡ãŒãžã䜿çšããŠIE8ã§Webã¢ããªããã¹ãããŸããã ç°¡åã«å§ããããããŸãæ©èœããŸããã
@benoitcå¿ èŠã«å¿ããŠã PSFã§Windowsã©ã€ã»ã³ã¹ãæäŸã§ãããšæããŸãã
@benoitcãã®ããã®WIPãã©ã³ãã¯ãããŸããïŒ ç§ã¯WindowsãŠãŒã¶ãŒã§ã¯ãããŸãããããããèŠãããšãã§ããŸãã
@berkerpeksagãŸã ãããŸããïŒ/ç§ãã¡ã¯æ¬åœã«ã§ããã ãæ©ãéå§ããå¿ èŠããããŸãã
@cyberdeliaã®ããã«ãgunicornãããžã§ã¯ãããã®ãããªéçºã«äœ¿çšã§ããPSFã®ãŠã£ã³ããŠã®ã©ã€ã»ã³ã¹ãèŠæ±ã§ãããšèšã£ãããã«ã èãïŒ
ããèãã ãã https://www.python.org/psf/grants/ã«ã¯ãå©æéã®ææ¡ã«é¢ãããã¹ãŠã®æ å ±ããããŸãã
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ
ç§ãããã«å¯Ÿããã¢ããããŒããæ¢ããŠããŸãã
@berkerpeksagã¯ãIRCã«ã€ããŠã§ããã ãæ©ã話ãããŸããããéä¿¡ããŸã:)
@benoitcããã«é¢ããæŽæ°ã¯ãããŸããïŒ
@lealhuguiç§ã®ç¥ãéãããã以æ¥é²å±ã¯ãããŸããã ãšã«ããç§ã¯èšç»ãæã£ãŠããŸããïŒ
3æã«ãªãªãŒã¹ãããããšããããŸãã ãããããã£ãšæ©ãããããçŽæã¯ãããŸãã:)ç§ãããå®éã«ãŠã£ã³ããŠãããç¥ã£ãŠãã人ïŒ1995幎以æ¥ãŠã£ã³ããŠã䜿çšããŠããªãã£ããã³ã...ïŒãå©ããŠãããã°ããã¡ããä»äºã¯éããªããŸãïŒ
1æäžæ¬ä»¥éã®@benoitc ãç§ã¯æäŒãããšãã§ããŸãïŒåºæ¬çã«ãã¹ãããŸãã¯ããªããå¿ èŠãšããç§ãæäŒãããšãã§ãããã®ãªãäœã§ãïŒã
@lealhuguiããããšãïŒ ã§ããã ãæ©ãã¢ããããŒããæäŸããŸã
ç©äºãããŸããã£ãŠããããšãé¡ã£ãŠããŸãã 3æã®ãã®ãªãªãŒã¹ã¯ãŸã é 調ã§ããïŒ
@tannaalokã¯ããããããªãã ããŸãããã°ã @ benoitcãIPCäœæ¥ãå ¬éã§ããWindowsã®ãµããŒããå¯èœã«ãªããããããŸããã IPCã®äœæ¥ãçéžãããŸã§ã«ã¯å°ãæéãããããŸãããã®åŸãæ®ãã®Windowsã®äœæ¥ãæ€åºãããããªã¢ãŒãžãããäœæ¥ãããŸãã èšãã®ã¯ãšãŠãé£ããã§ãã
@tilgovi IPCã®äœæ¥ã¯ãæ¥é±ãããããã©ã³ãã«çéžããããšããããŸã:)
ããŠãWindowsããŒãžã§ã³ã«ã€ããŠããããç§ãé ã®äžã§æã£ãŠããèšç»ã§ãã æåã«è¡ãããšã¯ãGunicornãWindows CIã«
ç§ã¯äœããéããŸãããïŒ ã©ããªå©ãã§ã倧æè¿ã§ããç§èªèº«ã¯ãŠã£ã³ããŠãºã®æ¯æ¥ã®ãŠãŒã¶ãŒã§ã¯ãããŸããã ãããã£ãŠãWindowsãã©ãããã©ãŒã ãgunicornã®æåã®åžæ°ã«ããããã«ããã®éšåãäž»å°ãããWindowsã®çµéšããã人ã¯èª°ã§ãæè¿ããŸãïŒ
Python 3.5ã¯ãWindowsã§ã·ã°ãã«ãåŠçããããã®äŸ¿å©ãªæ©èœãè¿œå ããŸããsignal.set_wakeup_fdïŒïŒã¯ãWindowsã§ãœã±ãããã³ãã«ãåãå
¥ããããã«ãªããŸããã
https://docs.python.org/dev/library/signal.html#signal.set_wakeup_fd
@cyberdeliaã®ããã«ãPSFã§ãŠã£ã³ããŠã®ã©ã€ã»ã³ã¹ãèŠæ±ã§ãããšèšã£ã
Microsoftã¯ãPythonã³ã¢éçºè åãã«ç¡æã®MSDNã©ã€ã»ã³ã¹ãæäŸããŠããŸãã ããšãã°ãã³ã¢éçºè ãšããŠãç§ã¯Visual Studio2015ã«ã¢ã¯ã»ã¹ã§ããŸãã
@haypoããããšãã å®éãããã¯UNIXã®ã¢ãŒãã¿ãŒããŠã§ã€ã¯ã¢ããããããã«ã䜿çšã§ããŸã...éåžžã«äŸ¿å©ã§ãã
ã³ã¢éçºè ãå©ãã«ãªããªããããã¯åœ¹ã«ç«ã€ã§ããã:)ãããå€éšãããžã§ã¯ãã§ãããšãã«ãããæ±ããæ¹æ³ã«ã€ããŠäœãã¢ã€ãã¢ã¯ãããŸããïŒ
ãŸããWindowsæ©èœã察象ãšããWSLïŒWindows for LinuxïŒããããŸãã
Linuxãšgunicornã®ç¥èãéãããŠãã人ããããWindowsã«ç§»æ€ããã®ã«åœ¹ç«ã€æ¹æ³ã¯ãããŸããããããšãåé¡ã¯ç°¡åã§ã¯ãããŸãããïŒ
ãã®åé¡ã解決ãããã®ã¯ãªãã§ããïŒ Windowsã§ã®äœæ¥ã«é¢ããæ å ±ãèŠã€ãããŸãã
ãã®åé¡ã¯ãŸã æªè§£æ±ºã§ãã
@DominikDitoIvosevicããã¯ãŸã éããŠããŸãã ä»é±ãããçš®ã®ããŒãããããæã æäŸããŸãã
ç§ã¯ä»æ¥ãããã€ãã®äºææ§ã®ããèªæžã«åºããããŸããã ïŒ1310ã®äœåãèŠãŠããŸããã FD_CLOEXECã¯ãsystemdCã©ã€ãã©ãªãšã¯ç°ãªãæ¹æ³ã§åŠçããŸããã ãããç§ãPEP446ã«å°ãã fork
åäœã«ã€ããŠèããWindowsã«ã¯fork
ããªãããšãæãåºããŸããã
å§ããããã«ãããŒããããã«å¿ èŠãªãã®ãããã€ã瀺ããŸãã
os.fork
ãããããmultiprocessing.Process
眮ãæããŸãWorkerTemp
ãmultiprocessing.Pipe
眮ãæããŸãä»äºã§Windowsã§ç«ã¡åŸçããŠãããããã¯æ¬åœã«ç§ãå©ããŸãã ãã®æ©èœã«å€§ãã«æåŸ ããŠããŸãïŒ
ããã¯çãã§ã¯ãªããããããŸãããããŠã§ã€ãã¬ã¹ã¯æ¬åœã«è¯ããšæããŸã
ãŠã£ã³ããŠãºã
2016幎8æ8æ¥å€10æ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ã䜿çšããŠããã®ã§ãWindowsã§ã®gunicornã®äœæ¥ã¯éåžžã«é«ãè©äŸ¡ãããŸãã ããããšã ïŒ
ãã€æºåãã§ããããäœãèšç»ã¯ãããŸããïŒ
ããã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ å®çšŒåç°å¢ã§ã¯Windowsã䜿çšããããåŸãŸããã äœæ¥ãåæ»ããŠããå Žåã¯ãèšç»æ¡ãå ±æã§ããŸããïŒ ä¹Ÿæ¯ïŒ
@cmorganããã§ãåãç¶æ³ã§ãã 誰ãããã®åé¡ã«é¢ããææ°æ å ±ãæã£ãŠããŸããïŒ
@benoitcããã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ
ããã«ã¡ã¯ãã¿ããª
ããã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ
æŽæ°ãåé¡ã«è¿œå ããããšç¢ºä¿¡ããŠããŸãã æŽæ°ãèŠæ±ããå¿ èŠã¯ãããŸããã
ããã«ã¡ã¯ãã¿ããªã
以åã«åçããªãã£ãããšããè©«ã³ããŸãã æè¿ã¯ããªãå¿ããã§ãã ã§ãããããã®æ©èœãåŸ ã£ãŠãã人ã¯ããããããããã§ãããããããããäœãæãæ¥ãŸããã IIã¯ããã«ã€ããŠæ¥ææ¥ãŸã§ã«èšç»ãèµ·èãããããå®çŸããæ¹æ³ãèŠã€ããããã«ããŸã:)
ãããããå°ãããããå®çšçãªã¿ã¹ã¯ã«åå²ããããšããåé²ããããã®æè¯ã®æ¹æ³ã§ãããšç§ã¯ä¿¡ããŠããŸãã
ãã®ãããAppVeyoræ§æãè¿œå ããããã®PRïŒ1468ã䜿çšããŠããCIã®ã»ããã¢ãããéšåã®ïŒ1467ãæåºããŸããã ãã¹ãå®è¡ã®äŸã¯æ¬¡ã®ãšããã§ãã
https://ci.appveyor.com/project/edmorley/gunicorn/build/windows-ci.18
以åã®ã³ã¡ã³ãã§è¿°ã¹ã倧ããªå€æŽïŒã·ã°ãã«ãã¯ãŒã«ãŒIPCããã©ãŒã¯ã®æ¬ åŠã®åŠçãªã©ïŒã«å ããŠããã¹ããå®è¡ããåã«ã次ã®ããšã解決ããå¿ èŠããããŸãã
ImportError: No module named fcntl
ïŒ fcntl.fcntlïŒïŒã¯close_on_execïŒïŒããã³set_non_blockingïŒïŒã«ãã£ãŠäœ¿çšãããŸãïŒImportError: No module named grp
ïŒ grp.getgrnamïŒïŒã¯validate_groupïŒïŒã«ãã£ãŠäœ¿çšãããŸãïŒImportError: No module named pwd
ïŒ pwd.getpwnamïŒïŒã¯validate_userïŒïŒã«ãã£ãŠäœ¿çšãããŸãïŒImportError: No module named resource
ïŒ resource.getrlimitïŒïŒã¯get_maxfdïŒïŒã«ãã£ãŠäœ¿çšãããŸããããã®ã¡ãœããã¯äœ¿çšãããŠããªãããã«èŠããŸã-ïŒ1469ãéããŠåé€ããŸããïŒAttributeError: 'module' object has no attribute 'AF_UNIX'
ïŒ UnixSocketã®FAMILY
ã¯ã©ã¹å±æ§ã§äœ¿çšãããŸãïŒAttributeError: 'module' object has no attribute 'geteuid'
ïŒ os.geteuidïŒïŒã¯ãŠãŒã¶ãŒèšå®ã®ããã©ã«ãå€ã§äœ¿çšããAttributeError: 'module' object has no attribute 'getegid'
ïŒ os.getegidïŒïŒã¯ã°ã«ãŒãèšå®ã®ããã©ã«ãå€ã§äœ¿çšãã@edmorleyããããšããã§ããã ãæ©ããããèŠãŠãããŸã:)
ãã®æ©èœã¯ãã€å°éã§ããŸããïŒãã®åé¡ã¯çŽ4幎åã«å§ãŸããŸããã
ããã
ç§ãã¡ã¯ãã®æ©èœãåããããšèããŠããŸãããããããã€èµ·ããå§ãããã«ã€ããŠäœãèãããããŸããïŒ
ããã«ã¡ã¯ãããã¯ãã€åŠçãããŸããïŒ :)
誰ããå©ãããã®ãªãã @ edmorleyãèŠã€ããåé¡ã®ããããã«åãçµãããšã¯æçšãªPRã«ãªãã§ãããã
ãããå¯èœã«ããããã«ãããã€ãã®ããšãããåçã«å€åããå¯èœæ§ãããããšã«æ³šæããŠãã ããã
çŸåšãããã«é¢ããã¿ã€ã ã©ã€ã³ã¯ãããŸããã æ¯æŽãããå Žåã¯ãIRCãããã«ã€ããŠãã£ããããããåã ã®äœæ¥é ç®ã«ã€ããŠå°ããªåé¡ãéãããããã®ã«æé©ãªå Žæã§ããå¯èœæ§ããããŸãã
é²æç¶æ³ã®éç¥ãåžæããå Žåã¯ããã®åé¡ã賌èªããŠãã ããã çŸåšãã¿ã€ã ã©ã€ã³ã¯ãããŸããã
FWIWãGunicornã¯Windowsã®Cygwinã§åäœããŸãã ç§ã¯ãããããŸã圹ã«ç«ããªãããšãç¥ã£ãŠããŸãããããã¯ãããŸã...
@ZorlinWindowsäžã®Cygwinã§åäœãããããšãã§ããŸããã å ¬åŒããã¥ã¡ã³ãã®äŸãè©ŠããŠã¿ãŸãã
$ 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'
ããã¯Windows10ã®ãµãã·ã¹ãã ã§ãå®è¡ãããã®ã§ãããå¿ èŠãªãã®ã§ã¯ãªãã§ããããã
Windowsããã€ãã£ãã«ãµããŒãããã«ã¯ã次ã®ãã®ãå¿ èŠã§ãã
CreateProcessW
ã䜿çšããŠããã»ã¹ãçæããŸãïŒãã«ãããã»ãã·ã³ã°ã§äœ¿çšããã_winapiæœè±¡åãåå©çšããå¯èœæ§ããããŸããïŒïŒå€åãã«ãããã»ãã·ã³ã°ã§äœ¿çšããã_winapiæœè±¡åãåå©çšããŸããïŒ
ãšããã§ãçšéãã«ãããã»ãã·ã³ã°CreateProcess
ã§popen_spawn_win32.py
ãããããå
éšã¢ãžã¥ãŒã«ã§ãã®ã§ãããã¯Pythonã®åŸæ¹äºææ§ããã»ã¹ã®äžéšã§ã¯ãããŸããã
ããã«ã¡ã¯ãã¿ããªïŒ ãã®åé¡ã®é²å±ã¯ã©ã®ããã«é²ãã§ããŸããïŒ å®æã®ç®æšæ¥ã¯ãããŸããïŒ ããããšãïŒ
@bartmikaãããã ç®æšæ¥ã¯ãããŸããã BenoitcãæŠèª¬ããããã«ãããã¹ãããšã¯ãããããããŸãã å©ããæè¿ããŸãã äžã§è¿°ã¹ãããã«ãæŽæ°ã®ããã«ãã®åé¡ã賌èªããŠãã ããã å ±æãããã®ãããã°æŽæ°ããŸãã
ããããšã@tilgovi ã
ãã®åé¡ã解決ããããã«è³éããããå¯èœæ§ã«ã€ããŠè©±ãåããããšæããŸãã Gunicornã®éçºè ãbart [at] simalam.comãŸã§ãé£çµ¡ãã ããã
ããããšãããããŸããïŒ
@bartmikaç³ãèš³ãããŸãããå¿ããé±ã§ããã @ tilgovi ïŒ @ berkerpeksagãšé£çµ¡ãåããããææ¥é£çµ¡ããŸãã ãšã«ããè¯ãèãã
@benoitcã¯ãGunicorn forWindowsã®ã¹ããŒã¿ã¹ã確èªãããã£ãã ãã§ãã ãªãªãŒã¹æ¥ã¯ãŸã ãªãããã§ãããWindowsã§ãã¹ãã§ããããŒã¿çããããã©ããã確èªããããšæããŸããã
@jmaulsbyã®äœæ¥ã¯ãŸã å®éã«ã¯éå§ãããŠããŸããã ãã£ãããšæ»ã£ãŠããŸããã ç§ã®èšç»ã¯ãWindowsã®ãµããŒããå«ãã次ã®ã¡ãžã£ãŒãªãªãŒã¹ã12æã«è¡ãããšã§ãã
@bartmikaç§ã¯
ã§ã¯ãWindowsã®ãµããŒãã¯ãããŸããïŒ 12æã§ã
楜ãã¿ã«ããŠããŸãïŒ 1æã§ãã
@benoitcæŽæ°ã¯ãããŸããïŒ
ããã
ããäžåºŠãã§ãã¯ã€ã³ããã ãã§ãäœãæ°ããããšã¯ãããŸããïŒ
ããããšã
ãã€ã¯
ãã
Windowsã§ApacheAirflowã䜿çšã§ããŸããïŒ
ããããšã
ã¹ãã«ãŒã«
ããã
次ã®ã³ãã³ããå®è¡ããããšããŠããŸããããã®ãšã©ãŒãçºçããŸãã ããªãã¯ãããæäŒã£ãŠããããŸããïŒ
(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ããããã
誰ããåœåã®éãWindowsã«æé©ãªGunicornã®ä»£æ¿æ¡ãææ¡ã§ãããšåœ¹ã«ç«ã¡ãŸããïŒ
æŽæ°ïŒç§ã¯ä»ãŠã§ã€ãã¬ã¹ã䜿çšããŠããŸããéåžžã«è¯ã代æ¿æ段ã§ã:)
5幎çµã¡ãŸããããããã«é¢ããæŽæ°ã¯ãããŸããïŒ ããããšãã
@hsluoyzå ¬ã«èµ·ãã£ãæåŸã®ããšã¯ãä»å¹Žã®3æ16æ¥ã ã£ããšç§ã¯ä¿¡ããŠããŸãã
ããã
ãã©ãŒã¯ããŠã£ã³ããŠã§åäœãããããšã«ãŸã éããããŸãããïŒ
ããã
ãã®ãã±ããã®äœæã«èå³ããããŸãã
ããŒãã®çŸåšã®ç¶æ
ã¯äœã§ããïŒ
ããŒãã®çŸåšã®ç¶æ ã¯äœã§ããïŒ
PRïŒ1468ã¯1幎åã«ããŒãžãããWindowsäžã®AppVeyorã§ã®ãã¹ããè¿œå ãããŸããããAppVeyorã¢ã«ãŠã³ããå®è¡ããåã«ã¢ã¯ãã£ãåããå¿ èŠããããŸãã
ãã®åŸã誰ããWindowsã®ãã¹ãå®è¡ã§çºçãã倱æãç¹°ãè¿ãå¿ èŠããããŸãã
@edmorleyä»æ¥ã¯appveyorã®é¢åãã¿ãŸãã
@Sweenpetã¯ãŸã äœããããŸããã æåã«è¡ãããšã¯ããã¹ãçµæã確èªãããããããã±ããããäœæããããšã§ãã
ãŸããã¹ã³ãŒãã«ã€ããŠæ±ºå®ããå¿ èŠããããŸãã
ææ¥ãIRCã§è©±ãåãããšãææ¡ããŸãã
ãªããžããªã«appveyorãã€ã³ã¹ããŒã«ããŸããïŒ
@ benoitc ãUbuntu18.04ããã³Python3.6.5çšã®ã¢ããªã±ãŒã·ã§ã³ïŒexamples / flaskapp.pyïŒãšãã¹ãŠã®ãã¹ããWSLã§å®è¡ããŠããŸãã ãããããtoxãã¡ã€ã«ã§æå®ãããŠããä»ã®ãã¹ãŠã®ããŒãžã§ã³ã§æ©èœããã¯ãã§ãã WSLã§å®è¡ããããšããäºå®ã¯ãWindows 10ã§å®è¡ãããŠããªãéããç§ãæ³åããã»ãšãã©ã®WindowsãŠãŒã¶ãŒã®åé¡ã解決ããŸããCygwinã¯ãŸã åºã䜿çšãããŠããŸããïŒ
ææ¥ãWindowsã§ã®ãã€ãã£ããµããŒãã«ã€ããŠè©±ãåãããšãã§ããŠããããã§ãããäœæãé©ããŠããŸããïŒ
ææ¥ããããã®ãã±ãããäœæããŸããäž»ã«ãã€ãã£ãã®Linuxã¢ãžã¥ãŒã«ãšãœã±ããã«é¢é£ããŠããããã§ãã
FWIWãWindowsã§cygwinã䜿çšããŠããŸã
PythonãWindowsäžã§é©åã«å®è¡ãããªãå ŽåïŒäŸïŒpsycopg2ãweasyprintãªã©ïŒãPythonãã¯ãã¹ãã©ãããã©ãŒã ã§ãããšäž»åŒµããŠããã®ã¯ãªãã§ããïŒ ãããŸã§ã®ãšãããWindows10ã§ãæ£ããåäœããŸããã
@ jtan4nihãã®æ 床ã¯ãŸããã
Pythonã¯ã¯ãã¹ãã©ãããã©ãŒã ã§ãããgunicornã¯ããã§ã¯ãããŸããã
ç³ãèš³ãããŸããããç§ã¯ã²ã©ããµã€ããã©ãã¯ãããŸããã 誰ããWindowsã§ãã€ãã£ãã«gunicornãå®è¡ãããå Žåã¯ãããããåãå ¥ããŠã質åã«çããŠããã ããã°å¹žãã§ãã
cs01 / gdbguiïŒ18ãåç §ããŠãã ãããå€åå©ããŠãã ãã
7幎ã«ãªããŸããããããå®çŸããããã®éã¯ãããŸããïŒ
ç§ã¯è¡é²äžã«ããã«è²»ããããã€ãã®ãµã€ã¯ã«ããããããããŸããã ç§ã¯èŠã€ããå¿
èŠããããŸã
ã©ããã§ãŠã£ã³ããŠãå®è¡ããæ¹æ³ã ããªãã¯ãã§ã«ã¿ãŒããã«ã§ãããå®è¡ããããšãã§ããŸã
ãšããããã
ãŸããå®éã«Windowsã䜿çšããŠãã人ãªã誰ã§ãããã®ãããã¯ã«ã€ããŠæ¯æŽã§ããŸãã
waitress
è©Šããã ããã
gunicorn
ã®èšèšã¯ãUnixããã³Unixã©ã€ã¯ãªã«ãŒãã«ãå©çšããŠWebãµãŒããŒã圢æããããšã§ãã
gunicornã䜿çšããŠherokuã«djangoããããã€ããæ¹æ³ã«é¢ããYouTubeãã¥ãŒããªã¢ã«ãèŠããšãã©ãããã°ãããå®è¡ã§ããã®ãçåã«æããŸãããããã§ãgunicornã®åé¡ã«æ©ãŸãããŠããŸãç¬
waitress
è©Šããã ããã
gunicorn
ã®èšèšã¯ãUnixããã³Unixã©ã€ã¯ãªã«ãŒãã«ãå©çšããŠWebãµãŒããŒã圢æããããšã§ãã
ãŠã§ã€ãã¬ã¹ã¯é©åãªãã«ãããã»ãã·ã³ã°ããµããŒãããŠããŸããã
é©åãªãã«ãããã»ãã·ã³ã°ããµããŒãããããã«Windowsã§ã©ã®ããã«å®è¡ã§ãããã«ã€ããŠã®å€§ãŸããªèãã¯ãããŸããïŒ
ãããå®è£
ããããã®ãããŸã§ã®äž»ãªé害ã¯äœãç¥ã£ãŠããŸããïŒ
ç§ã¯è¡é²äžã«ããã«è²»ããããã€ãã®ãµã€ã¯ã«ããããããããŸããã ã©ããã§ãŠã£ã³ããŠãå®è¡ããæ¹æ³ãèŠã€ããå¿ èŠããããŸãã ãšã«ããã¿ãŒããã«ã§ãã§ã«å®è¡ã§ããŸãã
Win10 dev VMã¯ãWindowsãå®è¡ããŠgunicornã®äºææ§ã確èªããããã®ãœãªã¥ãŒã·ã§ã³ã«ãªããŸããïŒ
ãããããWindowsã§ã¯fnctl
代ããã«pywin32
ã䜿çšã§ããŸããããã¡ã€ã«ããã¯æ©èœãããããã§ãã
æãåèã«ãªãã³ã¡ã³ã
@ jtan4nihãã®æ 床ã¯ãŸããã
Pythonã¯ã¯ãã¹ãã©ãããã©ãŒã ã§ãããgunicornã¯ããã§ã¯ãããŸããã