توضیحات تکمیلی اجرای دستی فازینگ

رایانه Master برای دریافت Taskها به پایگاه داده MongoDB که با Back-End مشترک است وصل می‌شود در نتیجه باید به یکدیگر به نحوی دسترسی داشته باشند. رایانه Masterبه صورت دوره‌ای به پایگاه داده وصل می‌شود و تسکی که فیلدstate آن برابر todo باشد را در صورتی که مشکلی نباشد به حالت in_progress می‌برد. در حال حاضر با توجه به اینکه یک masterدر سامانه وجود دارد به صورت همزمان تنها یک تسک می‌تواند اجرا شود (در فازهای آینده با پیاده‌سازی Master of Masters امکان اجرای چندین پروژه به طور همزمان وجود خواهد داشت). حالت‌های هر تسک به شکل زیر هستند:

  1. todo
  2. in progress
  3. done

هر تسک تنها در دو صورت done می‌شود:

  1. در صورتی که خطایی در حین اجرا پیش‌آید. در صورتی که خطایی پیش‌آمده باشد در فیلد error در پایگاه داده ذخیره خواهد شد. خطاها هم از سمت Master و هم از سمت Slave در پایگاه‌داده ذخیره می‌شوند. خطاهای مختلفی در سامانه وجود دارند که در فایل constants.py تعریف شده‌اند. نمونه‌ای از خطا در شکل زیر نمایش داده شده است.

  2. در صورتی که کاربر تسک را متوقف کند. در صورتی که کاربر یک تسک را متوقف کند مقدار stop مربوط به آن در پایگاه داده از false به true تغییر پیدا می‌کند.  در صورتی که یک تسک متوقف شود Master پس از اطلاع به تمامی Slaveها اطلاع می‌دهد و در نتیجه آن‌ها نیز متوقف می‌شوند. پس از توقف Slaveها Master نیز متوقف می‌شود.
    در صورتی که چه Master و یا Slave به درستی بسته نشوند و در پس زمینه در حال اجرا بمانند، در زمان اجرای تسک بعدی، پردازه‌ها بسته می‌شود و مشکل قفل شدن منابع به وجود نخواهد آمد.
    با توجه به حالت‌هایی که در مورد وضعیت یک تسک مطرح شد، یک تسک نباید همزمان در حالت todo باشد و مقدار stop آن نیز true باشد. از لحاظ منطقی هم کاملا صدق می‌کند.

جمع‌آوری ورودی‌ها در سمت Master انجام می‌شود. این ورودی‌های در مسیر self.report_manager.workdir وجود دارند. وظیفه ثبت در پایگاه داده به عهده یک نخ به نام report_manager_thread است که به صورت دوره مسیر‌های مربوطه را بررسی می‌کند. در نهایت خروجی به صورت شکل زیر است.

جمع‌آوری ورودی‌ها در سمت Master انجام می‌شود. این ورودی‌ها در مسیر self.report_manager.workdir وجود دارند. وظیفه ثبت در پایگاه داده به عهده یک نخ به نام report_manager_thread است که به صورت دوره‌ای مسیر‌های مربوطه را بررسی می‌کند. در نهایت خروجی به صورت شکل زیر است.

نمی‌توانید پاسخی پیدا کنید؟ آیا به دنبال مقاله خاصی هستید که در سؤالات عمومی قرار دارد؟ فقط پوشه ها و دسته بندی های مختلف مربوطه را مرور کنید و سپس مقاله مورد نظر خود را پیدا خواهید کرد.
تمامی حقوق مادی و معنوی این سایت متعلق به شرکت مهندسی دنیای فناوری امن ویرا می‌باشد.