چطور بفهمیم یک Scheduled Action در اودوو در حال اجراست؟
در این مقاله از سری «Dirty Hack»، قصد داریم یک روش جالب و کاربردی برای بررسی وضعیت اجرای Scheduled Actionها در اودوو (Odoo) را معرفی کنم؛ روشی که در پروژههای واقعی خودم استفاده کردهام.
چرا این مشکل وجود دارد؟
اودوو با وجود مزایای فوقالعادهای که دارد، مستندات بسیار ضعیفی ارائه داده است. همین موضوع باعث شده بسیاری از نکات فنی مثل شناسایی وضعیت اجرای Scheduled Action به طور کامل توضیح داده نشوند.
سیستم زمانبندی اودوو که بر پایه مدل ir.cron ساخته شده، فیلدی برای نشان دادن وضعیت اجرا یا توقف Scheduled Action ندارد. ویژگی state هم صرفاً نوع عملیات (مثلاً اجرای کد پایتون) را نشان میدهد و کمکی به تشخیص وضعیت اجرا نمیکند.
ایدهی خلاقانه: استفاده از قفل FOR UPDATE NOWAIT
از آنجایی که اودوو روی دیتابیس PostgreSQL اجرا میشود، میتوانیم از قابلیت FOR UPDATE NOWAIT استفاده کنیم.
این دستور تلاش میکند ردیفی از دیتابیس را قفل کند. اگر ردیف قبلاً قفل شده باشد (مثلاً به خاطر اجرای یک Scheduled Action)، عملیات قفل شکست میخورد و ما متوجه میشویم که Scheduled Action در حال اجراست.
خلاصهی ایده:
- اگر قفل برقرار شد: Scheduled Action متوقف است یا اجرا نمیشود.
- اگر قفل شکست خورد: Scheduled Action در حال اجراست.
پیادهسازی در کد اودوو
python
CopyEdit
def _check_if_cron_running(self): cron_id = self.env['ir.cron'].browse(18) if cron_id: try: self._cr.execute( """SELECT id FROM "%s" WHERE id IN %%s FOR UPDATE NOWAIT""" % cron_id._table, [tuple(cron_id.ids)], log_exceptions=False ) self._cr.rollback() _logger.info("Scheduled Action متوقف است یا اجرا نمیشود.") except psycopg2.OperationalError: self._cr.rollback() _logger.info("Scheduled Action در حال اجراست.")
نکته مهم:
چون این روش به صورت مستقیم روی دیتابیس کار میکند (و اصطلاحاً "dirty" است)، حتماً قبل از اعمال در محیط واقعی (Production) باید حسابی تست شود.
اگر به دنبال راهکارهای حرفهای برای پیادهسازی، توسعه و پشتیبانی از سیستمهای اودوو هستید،مگا ای آر پی همراه مطمئن شماست.
ما در مگا ای آر پی با تیمی تخصصی، تجربهی چندین ساله و رویکردی مشتریمحور، در مسیر بهبود کسبوکارهای دیجیتال در کنار شما هستیم.
از خدمات ما میتوانید در زمینههای زیر بهرهمند شوید:
پیادهسازی تخصصی Odoo
توسعه ماژولهای سفارشی
پشتیبانی فنی و مشاوره
راهکارهای تجارت الکترونیک و اتوماسیون کسبوکار
برای اطلاعات بیشتر به وبسایت MegaERP.ir مراجعه کنید. 🌟
نتیجهگیری
اگرچه این روش رسمی نیست و باید با احتیاط از آن استفاده شود، اما در بسیاری از پروژههای واقعی میتواند راهگشا باشد.
استفاده از اودوو، با وجود همهی چالشها، همچنان یکی از بهترین انتخابها در دنیای ERP است.
چطور بفهمیم که یک Scheduled Action در حال اجراست؟