2013-03-08 32 views
6

Tôi đang cố gắng chạy Gunicorn từ Giám sát viên trong hệ thống Ubuntu 12.04. Gunicorn chạy một ứng dụng Flask (dịch vụ web REST đơn giản được thử nghiệm với máy chủ nhúng của Flask). Tôi đã cài đặt Gunicorn bằng cách clonning GIT repo, cố gắng tránh 'apt-get install' vì nó chạy Gunicorn server khi cài đặt nó. Tôi không muốn nó chạy, nó sẽ được điều hành bởi Giám sát viên.Người giám sát không làm việc với Gunicorn + Flask

Vì vậy, sau khi cài đặt nó, nếu tôi cố gắng:

cd /usr/local/bin 
gunicorn my_app:app -c /path/to/gu_config_file 

Gunicorn hoạt động. Sau đó tôi giết nó. Lưu ý tệp cấu hình không có phần mở rộng, vì phần mở rộng '.py' không hoạt động đối với tôi. Vì vậy, tôi chỉnh sửa tập tin cấu hình Supervisor của như:

[program:gunicorn] 
command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup 
directory=/usr/local/bin/ 
autostart=true 
autorestart=true 
redirect_stderr=True 

Và cập nhật những thay đổi trong Supervisor:

supervisorctl reread 
# gunicorn: changed 
supervisorctl update 
# gunicorn: stopped 
# gunicorn: updated process group 

Phát hiện những thay đổi trong tập tin và làm việc cho chương trình Gunicorn. Ok, nhưng sau đó tôi cố gắng để bắt đầu nó:

supervisorctl start gunicorn 

Bắt một khó chịu:

gunicorn: ERROR (abnormal termination) 

Kiểm tra log giám sát của:

2013-03-08 13:07:22,378 INFO spawned: 'gunicorn' with pid 3355 
2013-03-08 13:07:22,916 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:23,918 INFO spawned: 'gunicorn' with pid 3361 
2013-03-08 13:07:24,492 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:26,496 INFO spawned: 'gunicorn' with pid 3367 
2013-03-08 13:07:27,078 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:30,085 INFO spawned: 'gunicorn' with pid 3373 
2013-03-08 13:07:30,628 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:31,630 INFO gave up: gunicorn entered FATAL state, too many start retries too quickly 

Tôi không biết phải làm gì ngay bây giờ .. . Bạn có thể giúp tôi được không? Thx rất nhiều!

EDIT: xin lỗi tôi quên nói rằng tôi đã xuất khẩu biến PYTHONPATH như:

export PYTHONPATH=/usr/local/bin:/usr/local/lib/project 

'my_app' là trong/usr/local/bin. Đường dẫn lib là cần thiết cho các mô-đun khác. Tôi cũng đã chỉnh sửa tập tin Cấu hình giám sát để chỉ biến môi trường, như:

environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project/ 

Nhưng không hoạt động.

EDIT 2: như @robertklep đề nghị trong bình luận của ông, đây là dữ liệu ghi nhận của:

Traceback (most recent call last): 
    File "/tmp/gunicorn/gunicorn/arbiter.py", line 485, in spawn_worker 
    worker.init_process() 
    File "/tmp/gunicorn/gunicorn/workers/base.py", line 100, in init_process 
    self.wsgi = self.app.wsgi() 
    File "/tmp/gunicorn/gunicorn/app/base.py", line 103, in wsgi 
    self.callable = self.load() 
    File "/tmp/gunicorn/gunicorn/app/wsgiapp.py", line 25, in load 
    return util.import_app(self.app_uri) 
    File "/tmp/gunicorn/gunicorn/util.py", line 369, in import_app 
    __import__(module) 
    File "/usr/local/bin/my_app.py", line 4, in <module> 
    import const 
ImportError: No module named const 
2013-03-08 13:29:35 [3670] [INFO] Worker exiting (pid: 3670) 
2013-03-08 13:29:36 [3665] [INFO] Shutting down: Master 
2013-03-08 13:29:36 [3665] [INFO] Reason: Worker failed to boot. 

'const' mô-đun là trong usr/local/lib/dự án/...

Trả lời

8

tôi don 't thấy bạn thiết lập môi trường giám sát tập tin cấu hình của bạn:

[program:gunicorn] 
environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project 
command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup 
... 

Nếu điều đó không làm việc, hãy thử bắt đầu gunicorn trong chế độ gỡ lỗi:

command=/usr/local/bin/gunicorn --debug --log-level debug my_app:app -c /path/to/.gu_setup 

Hoặc vượt qua con đường trực tiếp đến gunicorn:

command=/usr/local/bin/gunicorn --pythonpath /usr/local/bin,/usr/local/lib/project my_app:app -c /path/to/.gu_setup 

EDIT: gunicorn của --pythonpath là bị hỏng, bạn chỉ có thể vượt qua một thư mục:

command=/usr/local/bin/gunicorn --pythonpath /usr/local/lib/project my_app:app -c /path/to/.gu_setup 
+0

Vâng, tôi đã làm điều đó và đang chỉnh sửa câu hỏi của tôi cùng lúc bạn trả lời tôi ... xin lỗi! Tôi đang làm những gì bạn nói, chờ đợi! :) –

+0

Vì vậy, cho tôi biết nó không thể tìm thấy mô-đun 'const', nhưng nó nằm trong/usr/local/lib/project, được thêm vào môi trường trong tập tin cấu hình của Supervisor ... –

+0

Xem chỉnh sửa của tôi về việc chuyển đường dẫn trực tiếp tới gunicorn. – robertklep

3

Đó là không cần thiết vượt qua --pythonpath .Nếu bạn làm việc virtuanenv bạn đặt thêm nơi là gunicorn. Ví dụ:

command=/home/virtualenv/bin/gunicorn application:app -c /home/virtualenv/deploy/gunicorn.conf.py 

Và thư mục là khi Flask code đang, ví dụ:

directory=/home/virtualenv/myapp 

Ghi sử dụng là gốc!

user=root 
Các vấn đề liên quan