Skip to main content

A lightweight and simple task scheduler for Python

Project description

🚀 py-schedulerx

⚡ Lightweight Python Task Scheduler ⚡

Periyodik görevlerinizi kolayca yönetin - Sıfır bağımlılık, maksimum performans

Python Version License Zero Dependencies Threading Support

Status Version Maintained


import py_schedulerx as schedule

@schedule.every("30s")
def my_task():
    print("🎯 Task executed!")

schedule.run_forever()  # ✨ That's it!

py-schedulerx, Python projelerinde periyodik görevleri kolayca zamanlamak için geliştirilmiş hafif ve sade bir zamanlayıcı kütüphanedir. Fonksiyonları belirli aralıklarla otomatik olarak çalıştırmanızı sağlar.

✨ Özellikler

  • 🎯 Sade API: @schedule.every("30s") gibi basit decorator kullanımı
  • 🧵 Threading Desteği: threaded=True ile non-blocking görev çalıştırma
  • Esnek Zaman Formatları: "30s", "5m", "2h", "1d" gibi human-readable formatlar
  • 🚀 Sıfır Bağımlılık: Pure Python, harici kütüphane gerektirmez
  • 🛠️ Robust Hata Yönetimi: Görev hatalarında kütüphane çökmez
  • 📏 Hafif: Minimal kod tabanı, hızlı başlangıç

🚀 Kurulum

pip install py-schedulerx

📖 Hızlı Başlangıç

Temel Kullanım

import py_schedulerx as schedule

@schedule.every("30s")
def fetch_data():
    print("API'den veri çekiliyor...")

@schedule.every("5m")
def cleanup_logs():
    print("Log dosyaları temizleniyor...")

@schedule.every("1h")
def backup_database():
    print("Veritabanı yedekleniyor...")

# Zamanlayıcıyı başlat
schedule.run_forever()

Threading ile Paralel Çalışma

import py_schedulerx as schedule
import time

@schedule.every("3s", threaded=True)
def heavy_task():
    print("Ağır işlem başladı...")
    time.sleep(10)  # Ana thread'i bloklamaz
    print("Ağır işlem tamamlandı!")

@schedule.every("1s")
def quick_task():
    print("Hızlı görev çalıştı")

schedule.run_forever()

Gelişmiş Kullanım

from py_schedulerx import Scheduler

# Özel scheduler instance'ı oluştur
scheduler = Scheduler()

# Programatik olarak görev ekleme
def my_task():
    print("Görev çalıştı!")

scheduler.add_job(my_task, "2m", threaded=True)

# Decorator ile görev ekleme
@scheduler.every("10s")
def another_task():
    print("Başka bir görev!")

# Zamanlayıcı bilgilerini görüntüle
print(f"Toplam görev sayısı: {len(scheduler)}")
for job in scheduler.get_jobs():
    print(f"Görev: {job}")

# Zamanlayıcıyı başlat
scheduler.run_forever()

⏰ Desteklenen Zaman Formatları

Format Açıklama Örnek
s, sec, second, seconds Saniye "30s", "5seconds"
m, min, minute, minutes Dakika "5m", "2minutes"
h, hour, hours Saat "2h", "1hour"
d, day, days Gün "1d", "3days"
w, week, weeks Hafta "1w", "2weeks"

Ondalık Değerler

@schedule.every("30.5s")  # 30.5 saniye
@schedule.every("1.5m")   # 1.5 dakika (90 saniye)
@schedule.every("0.5h")   # 30 dakika

🛠️ API Referansı

Decorator API

import py_schedulerx as schedule

@schedule.every(interval, threaded=False)
def my_function():
    pass

Scheduler Sınıfı

from py_schedulerx import Scheduler

scheduler = Scheduler()

# Görev ekleme
scheduler.add_job(func, interval, threaded=False)

# Görev kaldırma
scheduler.remove_job(func)

# Tüm görevleri temizleme
scheduler.clear_jobs()

# Bekleyen görevleri çalıştırma
scheduler.run_pending()

# Sonsuz döngü başlatma
scheduler.run_forever(sleep_interval=1.0)

# Zamanlayıcıyı durdurma
scheduler.stop()

# Görev listesi alma
jobs = scheduler.get_jobs()

# Sonraki çalışma zamanı
next_time = scheduler.next_run_time()

Yardımcı Fonksiyonlar

from py_schedulerx import format_duration, validate_interval

# Süreyi formatla
formatted = format_duration(3661)  # "1.0h"

# Interval formatını doğrula
is_valid = validate_interval("30s")  # True

🧪 Test Çalıştırma

# Temel testler
python -m unittest discover tests

# Coverage ile
pip install coverage
coverage run -m unittest discover tests
coverage report

📝 Örnek Kullanım Senaryoları

1. Web Scraping

import py_schedulerx as schedule
import requests

@schedule.every("1h", threaded=True)
def scrape_news():
    response = requests.get("https://api.example.com/news")
    # Veri işleme...
    print("Haberler güncellendi")

schedule.run_forever()

2. Sistem Monitoring

import py_schedulerx as schedule
import psutil

@schedule.every("30s")
def check_system():
    cpu = psutil.cpu_percent()
    memory = psutil.virtual_memory().percent
    print(f"CPU: {cpu}%, RAM: {memory}%")

@schedule.every("5m", threaded=True)
def cleanup_temp():
    # Geçici dosyaları temizle
    print("Temp dosyalar temizlendi")

schedule.run_forever()

3. Veritabanı Bakımı

import py_schedulerx as schedule

@schedule.every("1d", threaded=True)
def backup_database():
    # Veritabanı yedekleme
    print("Veritabanı yedeklendi")

@schedule.every("1w", threaded=True)
def optimize_database():
    # Veritabanı optimizasyonu
    print("Veritabanı optimize edildi")

schedule.run_forever()

🤝 Katkıda Bulunma

  1. Bu repo'yu fork edin
  2. Feature branch oluşturun (git checkout -b feature/amazing-feature)
  3. Değişikliklerinizi commit edin (git commit -m 'Add amazing feature')
  4. Branch'inizi push edin (git push origin feature/amazing-feature)
  5. Pull Request oluşturun

📄 Lisans

Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.

🆚 Diğer Kütüphanelerle Karşılaştırma

Özellik py-schedulerx schedule APScheduler
Sıfır bağımlılık
Threading desteği
Sade API
Hafif
Human-readable format

💡 İpuçları

  • Threading kullanımı: Uzun süren görevler için threaded=True kullanın
  • Hata yönetimi: Görevlerinizde try-catch blokları kullanın
  • Performans: Çok sık çalışan görevler için düşük sleep_interval değeri kullanın
  • Debugging: Görev durumlarını kontrol etmek için scheduler.get_jobs() kullanın

py-schedulerx ile periyodik görevlerinizi kolayca yönetin! 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_schedulerx-0.1.0.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_schedulerx-0.1.0-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file py_schedulerx-0.1.0.tar.gz.

File metadata

  • Download URL: py_schedulerx-0.1.0.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for py_schedulerx-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f049a527d100959123fd64eb52e3b8a624f597f73144aded88c73acf19a9b8b2
MD5 fa04571b164a0e7ee05fac846c2812c9
BLAKE2b-256 5b05b9012aaaf3f3004926f926c51715d27de981d8cc44a5847387c35bb2c378

See more details on using hashes here.

File details

Details for the file py_schedulerx-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: py_schedulerx-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for py_schedulerx-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b430359b7f92d228b4ef29c46fbfa82bff1df1a7bcf2b74ec971682937407ead
MD5 8b32f10f74ab65c8915b4097db85bb39
BLAKE2b-256 e9e6b75f5ff91eb766c78496d642ed4e0a1b321a351e82febca7a74f49899ca9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page