2014-07-01 27 views
13

Chúng tôi có thiết lập Azure Website với vùng triển khai "dàn dựng" và chúng tôi sử dụng Azure WebJob liên tục để xử lý các tác vụ nền dài. Có vẻ như khi bạn xuất bản lên Website (và bao gồm các tệp nhị phân WebJob), thì WebJob sẽ tự khởi động lại nếu nó đã bị dừng trước đó.Cách ngăn Azure WebJob khởi động sau khi xuất bản?

quá trình triển khai hiện tại của chúng tôi trông giống như sau:

  1. Triển khai để dàn
  2. Ngay & nhanh chóng ngăn chặn sự WebJob trên dàn (cố gắng ngăn chặn 2 WebJobs từ tin nhắn chế biến)
  3. kiểm tra khói và xác minh mã trên các công trình STAGING
  4. Dừng WebJob sản xuất (để nó thoát khỏi các thông điệp xếp hàng)
  5. Hoán đổi giữa SẢN XUẤT và dàn
  6. Bắt đầu WebJob SẢN XUẤT (mà chỉ là WebJob Staging)

Có một thủ thuật (nói một file cờ hoặc một cái gì đó) để kể một WebJob KHÔNG khởi động sau khi xuất bản?

Trả lời

18

Để triển khai WebJob liên tục ở trạng thái dừng chỉ cần thêm tệp có tên disable.job vào thư mục gốc của WebJob (nhị phân), điều này sẽ cho biết khung công tác WebJob hiện đang bị dừng.

Để xem hành vi này, bạn có thể chỉ cần dừng một WebJob liên tục và thấy rằng tệp này được tạo và được đặt tại thư mục của WebJob.

+0

Chỉ cần thử nghiệm này và nó hoạt động tuyệt vời. Tôi đã thêm một tập tin 'disable.job' vào thư mục gốc của dự án console # c của tôi và thiết lập hành động xây dựng của nó thành 'Content'. – ericb

+0

@Amit Tôi có thể thề rằng cho đến gần đây, khi một trang web được xuất bản trạng thái của webjob sẽ vẫn giữ nguyên - nếu nó dừng lại, hãy dừng nó lại; nếu nó đang chạy, hãy tiếp tục chạy. Thực tế là tôi đang xuất bản một phiên bản mới của mã ứng dụng web và/hoặc mã webjob không nên được xem như một giả định bởi khuôn khổ mà trạng thái hoạt động của webjobs nên được thay đổi. FYI tôi đã đăng trên trang này tại đây https://stackoverflow.com/questions/42380853/stopped-azure-webjobs-are-starting-following-publishing-of-web-app. – Matt

0

AFAIK, không có giải pháp hộp nào cho điều đó. Tuy nhiên, bạn có thể đặt cài đặt ứng dụng và yêu cầu mã webjob kiểm tra khi nó bắt đầu. Ngoài ra, bạn có thể sử dụng biến số HTTP_HOST để tìm ra môi trường.

+0

Đó là một ý tưởng hay nhưng nếu bạn đặt công việc liên tục để chạy nhưng bạn thực sự dừng nó thay vì gọi RunAndBlock(), Azure nên khởi động lại nó khi thấy nó đóng. Giả định này có đúng không? – jsgoupil

12

Bạn có thể thêm Cài đặt ứng dụng WEBJOBS_STOPPED vào vị trí dàn dựng và đặt nó thành 1. Đặt cài đặt này là 'Cài đặt vùng' để không được hoán đổi với quá trình sản xuất.

+0

Điều này làm việc cho tôi. Thông tin thêm: https://github.com/projectkudu/kudu/search?utf8=%E2%9C%93&q=IsWebJobsStopped –

+1

Khi bạn thiết lập điều này, bạn có thể kiểm tra xem công việc KHÔNG chạy ("Ngưng") trên dàn trải qua trang tổng quan webjobs của bạn: https://yoursubdomain.scm.azurewebsites.net/azurejobs/ – sammy34

+0

Điều này phù hợp với tôi. Nên là câu trả lời được chấp nhận IMO –

Các vấn đề liên quan