من قصد دارم برای یه کار خیلی ساده، یه cronjob خیلی ساده درست کنم و فکر میکنم هرچقدر دسترسیم به تنظیمات زمانبندی بیشتر باشه، راحتترم.
اکثر لایبرریهایی که برای اینکار پیدا میشه، به نظرم زیادی high level و قوی هستن. من میخوام یه کار ساده انجام بدم.
به نظرتون اگه از future استفاده کنم و کارم رو بندازم روی یه thread با وقفهی طولانی، مشکلی به وجود نمیاد؟ (بیشتر منظورم از نظر مشغول نگهداشتن منابع سیستم هست)
برای اینکه سوالم واضحتر باشه:
کاری که قراره انجام بده، ریکوئست زدن به یه صفحهی وب، با وقفهی زمانی طولانی (مثلا هر ۲۴ساعت یک بار!) هست و مثلا اگه مشکلی وجود داشت، ۵دقیقه بعد دوباره امتحان کنه، اگه بازم نشد، یه log ثبت کنه که فلان تاریخ نتونستم جواب بگیرم.
خلاصه یه crawler خسته
دستهبندی رو «عمومی» انتخاب کردم. اگه تاپیک کلوژری شد، منتقلش میکنم به بخش کلوژر.
اینکه سیستم عامل هر روز اجراش کنه بهتره. حالا یا با cron که مطمئن تره یا اگر حوصله نداری یک دستور watch هست در یونیکس که هر چندوقت یکبار یک دستوری رو اجرا میکنه و خروجی (توی ترمینال) را بهروز میکنه.
یک کد یا اسکریپتی میتونی بنویسی که اون برنامهات رو اجرا کنه و خروجیش رو بگیره که اگر اونطور که میخواستی کار کرد تمام شه اگر نه یک sleep شاید بذاری و log کردن هم همونجا بنویسی. همانطور که سام گفت از صف هم میتونی استفاده کنی ولی حس میکنم برای نیازت مناسب نباشه.
به شخصه این کارا رو با زبان های سطح بالا مثل روبی و پایتون انجام میدم. میتونی اون اسکریپتی هم که گفتم برای لاگ و ران کردن رو با این زبانها بنویسی و صرفا یک فایل jar برات ران کنه و خروجیش رو بگیره.
کرون در سطح سیستم عامل هست که یک کار دورهای رو اجرا میکنه. زبانهای برنامه نویسی هم با اون کار میکنن (کتابخانههایی که مثلا هر فلان ساعت یک کاری را انجام میدن). صف را با ابزار های دیگه مثل مثلا redis استفاده میکنن و برای اون تلاش مجدد کردن ها و کارهای اضافه کردن مناسبه که فکر کنم نیاز نداری، اونم بخاطر برنامهای که روزی یک بار فقط قراره ران بشه.
https://man7.org/linux/man-pages/man5/crontab.5.html
Cron job با استفاده از crontab در سیستم عامل یک برنامه رو اجرا میکنه . این برنامه میتونه هرچی باشه وزمان بندی هم کاملا دست شماست
کتابخانه هایی هستند که اینکارو راحت می کنند مثل whenever در روبی