مشکل کند بودن تسک performance برای publisher ها

تسک محاسبه عملکرد تریدر ها خیلی کند هست و این کندی باعث میشه خیلی زمان ببره تا ما عملکرد تریدر هارو برای 1 سال گذشته ( یا بیشتر ) آپدیت کنیم.
به همین منظور باید این تسک رو سریع تر کنیم

دیزاین اولیه ای که انجام دادم در نهایت پیاده سازیش خیلی پیچیده شد ( قرار بود از .values() برای استخراج دیتای اصلی مورد نیاز از کوئری استفاده بشه که به دلیل فرمت بازگشتی این متد ، پیدا سازی خیلی پیچیده شد )
در نهایت دیزاین بعدی ای که انجام شد این بود که بیایم trend های 180 روز اخیر رو prefetch کنیم و سعی کنیم تا حد امکان trend های کمتری prefetch شوند.
که در ادامه روند انجام رو مینویسم

تسک جدید که ورژن 2 قبلی هست پیاده سازی شده و توی تست اولیه خیلی سریع تر از تسک قبلی بوده ( بیشتر از 10 برابر سریع تر )
و خب فقط تست خروجی ها باقی میمونه تا مطمئن بشیم تسک مشکلی نداره تا بره برای جایگزین شدن با تسک قبلی

در بررسی خروجی ها دیدم که 30d_normalized اشتباه محاسبه میشود و باید اصلاح بشه که دارم انجام میدم

تسک کاراش تموم شده و تستش رو هم انجام دادم و خروجی ها به نظر درست میان
برای اینکار به کلاس جدید ساختم با نام PublisherPerformanceUpdaterV2 که همون ورژن دوم کلاس قبلی محسوب میشه. همچنین برای اینکه بتونیم در صورت نیاز بین این 2 ورژن سوییچ کنیم یک ورودی جدید به نام performance_class_version به تسک اضافه کردم که ورژن کلاس برای محاسبه performance رو ورودی میگیره و دیفالتش روی ورژن 1 هست ( که از قبل استفاده میشد ) اگر بخوایم از ورژن 2 استفاده بشه باید 2 رو توی این فیلد ورودی بدیم.
لازم به ذکر هست که تسک قبلی 2 تا باگ داشت که متوجهش شدم که یکی رو حل کردم اما باگ بعدی رو متوجه نشدم چجوری حل کنم.
این دو تا باگ رو جدا ایشو کردم تا هم گزارشی داده باشم و هم اگر لازم دونستیم بریم سراغ مشکلی که حل نشده
مشکل اول ( که برطرف شده )
مشکل دوم ( که هنوز وجود داره )

در ضمن دارم تسک رو تغییر نام میدم چون اسمش غلط هست ( نام تسک task_update_crypto_publisher_performances.py هست که غلطه و باید crypto حذف بشه چون برای همه پابلیشر هاست )
بعد از تموم شدن کار تسک رو میدم بالا

تسک اسمش به task_update_publisher_performances تغییر پیدا کرد و الان رفت روی dev
در ادامه فقط باید مانیتور بشه تا کم کم سوییچ کنیم روش که به مرور انجام میدم

در حال حاضر به دلیل مشکلاتی که توی همروش پیدا کردیم نمیشه بدیمش روی production و همچنین چون اسم تسک عوض شده باید توی پشت پرده هم نام ها اصلاح بشن که فعلا دسترسی نداریم
بعد از اینکه مشکل حل شد این کار ها رو میرم سراغش ( آپدیت : سید قرار شد اسم هارو توی پشت پرده درست کنه قبل اینکه کامیت رو بده بالا چون الان یه مقدار مشکل داریم واسه deploy)

توی این تاریخ خاص تسک ات رو به نظر تست بکن
چون ابزار timezone جنگو به مشکل میخوره توی اون تاریخ
@MSaeidSedighi

من الان تسک رو روی production اجرا کردم و رم خیلی مصرف میکنه ( تسک workerlost خورد )
باید اصلاح بشه
میرم سراغش ئ بعدش گزارش میدم چیا عوض شد

2 پسندیده

تسک رو اصلاح کردم دادم بالا و در حال حاضر توی تستی که انجام دادم برای هر روز حدود 10 دقیقه طول میکشه که نسبت به تسک قبلی تایمش تقریبا نصف شده.
تسک آپدیت هفتگیمون که دو روز طول میکشید اگر سوویچ کنیم روی ورژن جدید یک روزه انجام میشه

از سید کمک گرفتم و یه سری از دیتا هایی که لازم نبود رو از query برداشتم در نتیجه الان سرعت تسک بیشتر شده و رسیده به 4 دقیقه به ازای هر روز
یک باگ هم داشت تسکه با تشکر از محمد علی تونستیم پیداش کنیم
الان تسک رو دادم روی production

تست روی پروداکشن هم انجام شد و تسک درست کار میکنه

1 پسندیده

4 دقیقه به ازای هر روز یعنی یکسال رو 1 روز طول میکشه حساب کنه در صورتی که طبق نوشته علی در اپدیت تغییرات روزانه ارزش پورتفوی تریدر در چهار سال اخیر محاسبه تغییرات روزانه ارزش پرتفو دوسال رو 1 روز طول میکشه یعنی تسک performace دوبرابر تسک change portfo طول میکشه. درسته؟ منطقیه؟ حسم اینهperformace باید کم تر طول بشکه نسبت به change portfo
@MSaeidSedighi

فکر نمیکنم
محاسبه عمکرد میاد برای 7 روز ، 30 روز ، 90 روز و 180 روز عملکرد حساب میکنه برای تک تک تریدر ها
خیلی محاسبات داره و تعدادشم زیاده
@AliTaba @hamidrexa

1 پسندیده

این تسک برای عملکرد 365 روزه باگ داره که اینجا بررسی میشه : تسک performance تریدر ها برای 365 روز مشکل داره

1 پسندیده

با یه تغییر معماری میتونیم سریع تر هم بکنیم اگه این عدد هنوز قابل قبول نیست.
@hamidrexa

این ایشو ها هم مربوط به این تسک میشه : تسک performance تریدر ها فقط ترند رو آپدیت می کند و نه عملکرد امروز رو
تسک performance تریدر منطق درستی در محاسبه عملکرد تریدر های جدید ندارد