หัวหน้างานออกจากกระบวนการเสมอด้วย 'exit status 0; ไม่ได้คาดหวัง'


13

ขณะนี้ฉันกำลังสร้าง vps ขึ้นใหม่และฉันต้องการใช้หัวหน้างานเพื่อจัดการกระบวนการ gunicorn / wsgi django ของฉัน สิ่งที่ต้องทำคือหัวหน้างานออกจากกระบวนการต่อไป:

2010-07-23 14:54:40,575 INFO supervisord started with pid 31391
2010-07-23 14:54:41,582 INFO spawned: 'projectx' with pid 31395
2010-07-23 14:54:41,691 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:42,695 INFO spawned: 'projectx' with pid 31401
2010-07-23 14:54:42,801 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:44,806 INFO spawned: 'projectx' with pid 31404
2010-07-23 14:54:44,912 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:47,917 INFO spawned: 'projectx' with pid 31408
2010-07-23 14:54:48,022 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:49,023 INFO gave up: projectx entered FATAL state, too many start retries too quickly

นี่คือการกำหนดค่าที่ฉันใช้:

[program:projectx]
command=/path/to/project/bin/gunicorn_django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
user=myuser
autostart=true
autorestart=true

ฉันได้ตรวจสอบสองครั้งแล้วและ gunicorn_django กลับสถานะ 0 เมื่อเกิดอย่างถูกต้อง

ฉันพยายามเพิ่ม exitcodes = 0,2 อย่างชัดเจนในการกำหนดค่า แต่ดูเหมือนจะไม่สร้างความแตกต่าง ดูเหมือนว่ากระบวนการจะเกิดขึ้นอย่างถูกต้อง แต่หัวหน้างานคิดว่ามันไม่ได้เกิดขึ้น

ไม่มีใครมีเงื่อนงำในการแก้ปัญหานี้หรือไม่?

ขอบคุณ Bjorn

คำตอบ:


12

หาก gunicorn_django กำลังทำให้เสียโฉมตัวเองมันไม่ใช่ชนิดของผู้ดูแลโปรแกรมที่ออกแบบมาเพื่อจัดการ หัวหน้างานคาดว่าโปรแกรมที่อยู่ภายใต้การดูแลของมันจะทำงานในเบื้องหน้าเพื่อให้สามารถตรวจสอบว่าพวกเขาออกจาก

ดูเอกสาร supervisord


gunicorn ไม่ทำให้เสียโฉมโดยตัวของมันเอง แต่ฉันตั้งมันไว้ในไฟล์การตั้งค่าของฉัน ฉันลบมันออกขอบคุณที่ชี้ไป
Bjorn

4

ตกลงหลังจากสับสนฉันคิดว่ามันมีบางสิ่งที่จะทำอย่างไรกับผู้ใช้ ฉันพยายามเรียกใช้กระบวนการลูกของฉันในฐานะผู้ใช้ที่แน่นอน หลังจากลบบรรทัด (ดูการกำหนดค่าของฉันด้านล่าง) ทุกอย่างทำงานได้ดี

Gunicorn config:

bind = "127.0.0.1:3305"
workers = 2

config Supervisor:

[program:projectx]
command=/path/to/project/bin/gunicorn_django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
; set the user here instead of in the gunicorn config.
user=user
autostart=true
autorestart=unexpected
stdout_logfile=/path/to/project/logs/project.log
redirect_stderr=true
exitcodes=1

1
เพียงทราบอย่างรวดเร็วว่าถ้าคุณต้องการที่จะออกจากนี้ su'ing เพื่อ myuser และใช้ gunicorn ควรให้คำใบ้ ผู้ต้องสงสัยตามปกติคือไฟล์บันทึกและ pid ที่ไม่สามารถเขียนได้ หรือแอพของคุณอาจต้องได้รับอนุญาตจากไฟล์ และขอให้ทราบอย่างรวดเร็วว่าเพื่อการสนับสนุนผู้บังคับบัญชาที่ดีกว่าคุณควรอัปเกรดเป็น 0.10 เนื่องจากเราแก้ไขปัญหาด้วยการรีสตาร์ท gunicorn ผ่านทาง supervisord (หรือ runit สำหรับเรื่องนั้น)
พอลเจ. เดวิส

0

ฉันพบข้อผิดพลาดคล้ายกันเมื่อพยายามเรียกใช้ http daemon ภายใต้หัวหน้างาน

แก้ไขโดยการลบไฟล์ pid เก่า: httpd_pid

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.