runmero


Namerunmero JSON
Version 2.5.0 PyPI version JSON
download
home_pagehttps://github.com/mero-palestine/runmero
Summaryمكتبة RunMero القوية لإدارة العمليات في الخلفية مع دعم أطر الويب المتعددة في بيئة Termux -
upload_time2025-08-20 15:49:29
maintainerNone
docs_urlNone
authormero
requires_python>=3.8
licenseMIT
keywords termux background-processes web-servers process-management fastapi flask django tornado android mobile-development palestine
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # RunMero - مكتبة إدارة العمليات في الخلفية

![RunMero Logo](https://via.placeholder.com/800x200/2E7D32/FFFFFF?text=RunMero+%7C+%D9%85%D9%83%D8%AA%D8%A8%D8%A9+%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9+%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA)

## نظرة عامة

**RunMero** هي مكتبة Python قوية ومتقدمة مصممة خصيصاً لإدارة العمليات في الخلفية وخوادم الويب في بيئة **Termux** على نظام Android. تقدم المكتبة دعماً شاملاً لأطر عمل الويب المتعددة مع إمكانيات متقدمة للمراقبة والتحسين.

## الميزات الرئيسية

### 🚀 إدارة العمليات المتقدمة
- **إدارة العمليات في الخلفية**: تشغيل وإدارة العمليات بشكل مستمر حتى عند إغلاق التطبيق
- **المراقبة التلقائية**: مراقبة حالة العمليات وإعادة تشغيلها تلقائياً عند الحاجة
- **إدارة الموارد**: تحكم ذكي في استهلاك الموارد والذاكرة
- **نظام التبعيات**: إدارة تبعيات العمليات وترتيب تشغيلها

### 🌐 دعم أطر الويب المتعددة
- **FastAPI**: خوادم حديثة وسريعة مع دعم async/await
- **Flask**: خوادم WSGI خفيفة وموثوقة
- **Django**: إطار عمل شامل مع قاعدة بيانات ولوحة إدارة
- **Tornado**: خوادم عالية الأداء مع دعم WebSocket

### 📱 تحسين Termux المتخصص
- **تحسين البطارية**: إعدادات خاصة لتوفير استهلاك البطارية
- **تحسين الذاكرة**: إدارة ذكية للذاكرة في البيئات المحدودة
- **مراقبة النظام**: مراقبة متقدمة لموارد النظام والأداء
- **الاستمرارية**: ضمان استمرار العمليات عبر دورات حياة التطبيق

### 🖥️ واجهة سطر الأوامر التفاعلية
- **الأمر `helpmero`**: واجهة تفاعلية سهلة الاستخدام
- **إدارة الخدمات**: تشغيل وإيقاف وإعادة تشغيل الخدمات
- **مراقبة الحالة**: عرض حالة النظام والعمليات في الوقت الفعلي
- **سجلات مفصلة**: عرض وتصفية سجلات النظام والتطبيقات

## التثبيت

### متطلبات النظام
- **Termux** (إصدار حديث)
- **Python 3.11+**
- **أنظمة Android 7.0+**

### التثبيت السريع

```bash
# تثبيت المكتبة
pip install runmero

# أو للتثبيت من المصدر
git clone https://github.com/mero-palestine/runmero.git
cd runmero
pip install -e .
```

### التثبيت التفاعلي (موصى به)

```bash
# تشغيل التثبيت التفاعلي الجذاب (2-3 دقائق)
python -c "from runmero.utils.installer import install_runmero; install_runmero()"
```

## الاستخدام السريع

### بدء الواجهة التفاعلية

```bash
# تشغيل واجهة RunMero التفاعلية
helpmero

# أو
runmero
```

### مثال أساسي - خادم FastAPI

```python
from runmero.frameworks import FastAPIServer
from runmero.core import ProcessManager

# إنشاء مدير العمليات
manager = ProcessManager()

# إنشاء خادم FastAPI
server = FastAPIServer(
    name="my_fastapi_server",
    port=8000,
    host="0.0.0.0"
)

# تسجيل وتشغيل الخادم
manager.register_process(server)
manager.start_process("my_fastapi_server")

# الخادم يعمل الآن في الخلفية!
```

### مثال متقدم - إدارة متعددة الخوادم

```python
from runmero.core import ProcessManager
from runmero.frameworks import FastAPIServer, FlaskServer
from runmero.services import BackgroundServiceManager

# إنشاء مدير الخدمات
service_manager = BackgroundServiceManager()

# إعداد خوادم متعددة
fastapi_server = FastAPIServer(name="api_server", port=8000)
flask_server = FlaskServer(name="web_server", port=5000)

# تسجيل الخوادم
service_manager.register_service(fastapi_server.get_service_config())
service_manager.register_service(flask_server.get_service_config())

# تشغيل جميع الخدمات
service_manager.start_all_services()
```

## الأوامر الأساسية

### واجهة سطر الأوامر

```bash
# عرض المساعدة والأوامر المتاحة
helpmero help

# عرض حالة النظام
helpmero status

# تشغيل خدمة معينة
helpmero start <service_name>

# إيقاف خدمة
helpmero stop <service_name>

# إعادة تشغيل خدمة
helpmero restart <service_name>

# عرض السجلات
helpmero logs <service_name>

# مراقبة الموارد
helpmero monitor

# إعدادات التحسين
helpmero optimize
```

## أمثلة متقدمة

### Django مع قاعدة بيانات

```python
from runmero.frameworks import DjangoServer
from runmero.core import ProcessManager

# إعداد خادم Django
django_server = DjangoServer(
    name="django_app",
    port=8080,
    settings_module="myproject.settings",
    wsgi_application="myproject.wsgi:application"
)

# تشغيل مع قاعدة بيانات
manager = ProcessManager()
manager.register_process(django_server)
manager.start_process("django_app")
```

### WebSocket مع Tornado

```python
from runmero.frameworks import TornadoServer
from runmero.core import ProcessManager

# خادم Tornado مع WebSocket
tornado_server = TornadoServer(
    name="websocket_server",
    port=9000,
    enable_websockets=True
)

manager = ProcessManager()
manager.register_process(tornado_server)
manager.start_process("websocket_server")
```

## إعدادات التحسين

### تحسين Termux

```python
from runmero.termux import TermuxOptimizer

# تطبيق تحسينات Termux
optimizer = TermuxOptimizer()
optimizer.optimize_battery()
optimizer.optimize_memory()
optimizer.optimize_cpu()
optimizer.setup_persistence()
```

### مراقبة النظام

```python
from runmero.services import SystemMonitor

# بدء مراقبة النظام
monitor = SystemMonitor()
monitor.start_monitoring()

# الحصول على إحصائيات النظام
stats = monitor.get_system_stats()
print(f"استهلاك CPU: {stats['cpu_percent']}%")
print(f"استهلاك الذاكرة: {stats['memory_percent']}%")
```

## واجهة برمجة التطبيقات (API)

### ProcessManager

```python
from runmero.core import ProcessManager

manager = ProcessManager()

# تسجيل عملية
manager.register_process(process_instance)

# تشغيل عملية
manager.start_process("process_name")

# إيقاف عملية
manager.stop_process("process_name")

# الحصول على حالة العمليات
status = manager.get_process_status("process_name")
```

### BackgroundServiceManager

```python
from runmero.services import BackgroundServiceManager

service_manager = BackgroundServiceManager()

# تسجيل خدمة
service_manager.register_service(service_config)

# تشغيل جميع الخدمات
service_manager.start_all_services()

# إيقاف خدمة معينة
service_manager.stop_service("service_name")
```

## الدعم والمساهمة

### المساهمة في المشروع

نرحب بمساهماتكم! يرجى قراءة [دليل المساهمة](CONTRIBUTING.md) للحصول على تفاصيل حول كيفية المساهمة في تطوير RunMero.

### الإبلاغ عن المشاكل

إذا واجهت أي مشاكل أو لديك اقتراحات، يرجى فتح [issue جديد](https://github.com/mero-palestine/runmero/issues) على GitHub.

### الدعم الفني

- **الوثائق**: [runmero.readthedocs.io](https://runmero.readthedocs.io)
- **GitHub**: [github.com/mero-palestine/runmero](https://github.com/mero-palestine/runmero)
- **البريد الإلكتروني**: mero@palestine.ps

## الترخيص

هذا المشروع مرخص تحت رخصة MIT. راجع ملف [LICENSE](LICENSE) للحصول على التفاصيل الكاملة.

## شكر وتقدير

تم تطوير RunMero بفخر في **فلسطين** 🇵🇸

### المطورون

- **mero** - المطور الرئيسي - [GitHub](https://github.com/mero-palestine)

### شكر خاص

شكر خاص لجميع المساهمين والمختبرين الذين ساعدوا في تطوير هذه المكتبة.

---

**RunMero** - قوة إدارة العمليات في راحة يدك 💪

صنع بـ ❤️ في فلسطين 🇵🇸

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/mero-palestine/runmero",
    "name": "runmero",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "mero <mero@palestine.ps>",
    "keywords": "termux, background-processes, web-servers, process-management, fastapi, flask, django, tornado, android, mobile-development, palestine",
    "author": "mero",
    "author_email": "mero <mero@palestine.ps>",
    "download_url": "https://files.pythonhosted.org/packages/10/f5/6a01e482bc295724498bc00eefdd30874cba842e26f811e4bdaced5dd18e/runmero-2.5.0.tar.gz",
    "platform": "linux",
    "description": "# RunMero - \u0645\u0643\u062a\u0628\u0629 \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0641\u064a \u0627\u0644\u062e\u0644\u0641\u064a\u0629\r\n\r\n![RunMero Logo](https://via.placeholder.com/800x200/2E7D32/FFFFFF?text=RunMero+%7C+%D9%85%D9%83%D8%AA%D8%A8%D8%A9+%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9+%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA)\r\n\r\n## \u0646\u0638\u0631\u0629 \u0639\u0627\u0645\u0629\r\n\r\n**RunMero** \u0647\u064a \u0645\u0643\u062a\u0628\u0629 Python \u0642\u0648\u064a\u0629 \u0648\u0645\u062a\u0642\u062f\u0645\u0629 \u0645\u0635\u0645\u0645\u0629 \u062e\u0635\u064a\u0635\u0627\u064b \u0644\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0641\u064a \u0627\u0644\u062e\u0644\u0641\u064a\u0629 \u0648\u062e\u0648\u0627\u062f\u0645 \u0627\u0644\u0648\u064a\u0628 \u0641\u064a \u0628\u064a\u0626\u0629 **Termux** \u0639\u0644\u0649 \u0646\u0638\u0627\u0645 Android. \u062a\u0642\u062f\u0645 \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u062f\u0639\u0645\u0627\u064b \u0634\u0627\u0645\u0644\u0627\u064b \u0644\u0623\u0637\u0631 \u0639\u0645\u0644 \u0627\u0644\u0648\u064a\u0628 \u0627\u0644\u0645\u062a\u0639\u062f\u062f\u0629 \u0645\u0639 \u0625\u0645\u0643\u0627\u0646\u064a\u0627\u062a \u0645\u062a\u0642\u062f\u0645\u0629 \u0644\u0644\u0645\u0631\u0627\u0642\u0628\u0629 \u0648\u0627\u0644\u062a\u062d\u0633\u064a\u0646.\r\n\r\n## \u0627\u0644\u0645\u064a\u0632\u0627\u062a \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629\r\n\r\n### \ud83d\ude80 \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0645\u062a\u0642\u062f\u0645\u0629\r\n- **\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0641\u064a \u0627\u0644\u062e\u0644\u0641\u064a\u0629**: \u062a\u0634\u063a\u064a\u0644 \u0648\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0628\u0634\u0643\u0644 \u0645\u0633\u062a\u0645\u0631 \u062d\u062a\u0649 \u0639\u0646\u062f \u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\r\n- **\u0627\u0644\u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a\u0629**: \u0645\u0631\u0627\u0642\u0628\u0629 \u062d\u0627\u0644\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0648\u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644\u0647\u0627 \u062a\u0644\u0642\u0627\u0626\u064a\u0627\u064b \u0639\u0646\u062f \u0627\u0644\u062d\u0627\u062c\u0629\r\n- **\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0648\u0627\u0631\u062f**: \u062a\u062d\u0643\u0645 \u0630\u0643\u064a \u0641\u064a \u0627\u0633\u062a\u0647\u0644\u0627\u0643 \u0627\u0644\u0645\u0648\u0627\u0631\u062f \u0648\u0627\u0644\u0630\u0627\u0643\u0631\u0629\r\n- **\u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u0628\u0639\u064a\u0627\u062a**: \u0625\u062f\u0627\u0631\u0629 \u062a\u0628\u0639\u064a\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0648\u062a\u0631\u062a\u064a\u0628 \u062a\u0634\u063a\u064a\u0644\u0647\u0627\r\n\r\n### \ud83c\udf10 \u062f\u0639\u0645 \u0623\u0637\u0631 \u0627\u0644\u0648\u064a\u0628 \u0627\u0644\u0645\u062a\u0639\u062f\u062f\u0629\r\n- **FastAPI**: \u062e\u0648\u0627\u062f\u0645 \u062d\u062f\u064a\u062b\u0629 \u0648\u0633\u0631\u064a\u0639\u0629 \u0645\u0639 \u062f\u0639\u0645 async/await\r\n- **Flask**: \u062e\u0648\u0627\u062f\u0645 WSGI \u062e\u0641\u064a\u0641\u0629 \u0648\u0645\u0648\u062b\u0648\u0642\u0629\r\n- **Django**: \u0625\u0637\u0627\u0631 \u0639\u0645\u0644 \u0634\u0627\u0645\u0644 \u0645\u0639 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0648\u0644\u0648\u062d\u0629 \u0625\u062f\u0627\u0631\u0629\r\n- **Tornado**: \u062e\u0648\u0627\u062f\u0645 \u0639\u0627\u0644\u064a\u0629 \u0627\u0644\u0623\u062f\u0627\u0621 \u0645\u0639 \u062f\u0639\u0645 WebSocket\r\n\r\n### \ud83d\udcf1 \u062a\u062d\u0633\u064a\u0646 Termux \u0627\u0644\u0645\u062a\u062e\u0635\u0635\r\n- **\u062a\u062d\u0633\u064a\u0646 \u0627\u0644\u0628\u0637\u0627\u0631\u064a\u0629**: \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u062e\u0627\u0635\u0629 \u0644\u062a\u0648\u0641\u064a\u0631 \u0627\u0633\u062a\u0647\u0644\u0627\u0643 \u0627\u0644\u0628\u0637\u0627\u0631\u064a\u0629\r\n- **\u062a\u062d\u0633\u064a\u0646 \u0627\u0644\u0630\u0627\u0643\u0631\u0629**: \u0625\u062f\u0627\u0631\u0629 \u0630\u0643\u064a\u0629 \u0644\u0644\u0630\u0627\u0643\u0631\u0629 \u0641\u064a \u0627\u0644\u0628\u064a\u0626\u0627\u062a \u0627\u0644\u0645\u062d\u062f\u0648\u062f\u0629\r\n- **\u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u0646\u0638\u0627\u0645**: \u0645\u0631\u0627\u0642\u0628\u0629 \u0645\u062a\u0642\u062f\u0645\u0629 \u0644\u0645\u0648\u0627\u0631\u062f \u0627\u0644\u0646\u0638\u0627\u0645 \u0648\u0627\u0644\u0623\u062f\u0627\u0621\r\n- **\u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631\u064a\u0629**: \u0636\u0645\u0627\u0646 \u0627\u0633\u062a\u0645\u0631\u0627\u0631 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0639\u0628\u0631 \u062f\u0648\u0631\u0627\u062a \u062d\u064a\u0627\u0629 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\r\n\r\n### \ud83d\udda5\ufe0f \u0648\u0627\u062c\u0647\u0629 \u0633\u0637\u0631 \u0627\u0644\u0623\u0648\u0627\u0645\u0631 \u0627\u0644\u062a\u0641\u0627\u0639\u0644\u064a\u0629\r\n- **\u0627\u0644\u0623\u0645\u0631 `helpmero`**: \u0648\u0627\u062c\u0647\u0629 \u062a\u0641\u0627\u0639\u0644\u064a\u0629 \u0633\u0647\u0644\u0629 \u0627\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645\r\n- **\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u062e\u062f\u0645\u0627\u062a**: \u062a\u0634\u063a\u064a\u0644 \u0648\u0625\u064a\u0642\u0627\u0641 \u0648\u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062e\u062f\u0645\u0627\u062a\r\n- **\u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u062d\u0627\u0644\u0629**: \u0639\u0631\u0636 \u062d\u0627\u0644\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 \u0648\u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0641\u064a \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0641\u0639\u0644\u064a\r\n- **\u0633\u062c\u0644\u0627\u062a \u0645\u0641\u0635\u0644\u0629**: \u0639\u0631\u0636 \u0648\u062a\u0635\u0641\u064a\u0629 \u0633\u062c\u0644\u0627\u062a \u0627\u0644\u0646\u0638\u0627\u0645 \u0648\u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a\r\n\r\n## \u0627\u0644\u062a\u062b\u0628\u064a\u062a\r\n\r\n### \u0645\u062a\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u0646\u0638\u0627\u0645\r\n- **Termux** (\u0625\u0635\u062f\u0627\u0631 \u062d\u062f\u064a\u062b)\r\n- **Python 3.11+**\r\n- **\u0623\u0646\u0638\u0645\u0629 Android 7.0+**\r\n\r\n### \u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0633\u0631\u064a\u0639\r\n\r\n```bash\r\n# \u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0643\u062a\u0628\u0629\r\npip install runmero\r\n\r\n# \u0623\u0648 \u0644\u0644\u062a\u062b\u0628\u064a\u062a \u0645\u0646 \u0627\u0644\u0645\u0635\u062f\u0631\r\ngit clone https://github.com/mero-palestine/runmero.git\r\ncd runmero\r\npip install -e .\r\n```\r\n\r\n### \u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u062a\u0641\u0627\u0639\u0644\u064a (\u0645\u0648\u0635\u0649 \u0628\u0647)\r\n\r\n```bash\r\n# \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u062a\u0641\u0627\u0639\u0644\u064a \u0627\u0644\u062c\u0630\u0627\u0628 (2-3 \u062f\u0642\u0627\u0626\u0642)\r\npython -c \"from runmero.utils.installer import install_runmero; install_runmero()\"\r\n```\r\n\r\n## \u0627\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0633\u0631\u064a\u0639\r\n\r\n### \u0628\u062f\u0621 \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u062a\u0641\u0627\u0639\u0644\u064a\u0629\r\n\r\n```bash\r\n# \u062a\u0634\u063a\u064a\u0644 \u0648\u0627\u062c\u0647\u0629 RunMero \u0627\u0644\u062a\u0641\u0627\u0639\u0644\u064a\u0629\r\nhelpmero\r\n\r\n# \u0623\u0648\r\nrunmero\r\n```\r\n\r\n### \u0645\u062b\u0627\u0644 \u0623\u0633\u0627\u0633\u064a - \u062e\u0627\u062f\u0645 FastAPI\r\n\r\n```python\r\nfrom runmero.frameworks import FastAPIServer\r\nfrom runmero.core import ProcessManager\r\n\r\n# \u0625\u0646\u0634\u0627\u0621 \u0645\u062f\u064a\u0631 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a\r\nmanager = ProcessManager()\r\n\r\n# \u0625\u0646\u0634\u0627\u0621 \u062e\u0627\u062f\u0645 FastAPI\r\nserver = FastAPIServer(\r\n    name=\"my_fastapi_server\",\r\n    port=8000,\r\n    host=\"0.0.0.0\"\r\n)\r\n\r\n# \u062a\u0633\u062c\u064a\u0644 \u0648\u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062e\u0627\u062f\u0645\r\nmanager.register_process(server)\r\nmanager.start_process(\"my_fastapi_server\")\r\n\r\n# \u0627\u0644\u062e\u0627\u062f\u0645 \u064a\u0639\u0645\u0644 \u0627\u0644\u0622\u0646 \u0641\u064a \u0627\u0644\u062e\u0644\u0641\u064a\u0629!\r\n```\r\n\r\n### \u0645\u062b\u0627\u0644 \u0645\u062a\u0642\u062f\u0645 - \u0625\u062f\u0627\u0631\u0629 \u0645\u062a\u0639\u062f\u062f\u0629 \u0627\u0644\u062e\u0648\u0627\u062f\u0645\r\n\r\n```python\r\nfrom runmero.core import ProcessManager\r\nfrom runmero.frameworks import FastAPIServer, FlaskServer\r\nfrom runmero.services import BackgroundServiceManager\r\n\r\n# \u0625\u0646\u0634\u0627\u0621 \u0645\u062f\u064a\u0631 \u0627\u0644\u062e\u062f\u0645\u0627\u062a\r\nservice_manager = BackgroundServiceManager()\r\n\r\n# \u0625\u0639\u062f\u0627\u062f \u062e\u0648\u0627\u062f\u0645 \u0645\u062a\u0639\u062f\u062f\u0629\r\nfastapi_server = FastAPIServer(name=\"api_server\", port=8000)\r\nflask_server = FlaskServer(name=\"web_server\", port=5000)\r\n\r\n# \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0648\u0627\u062f\u0645\r\nservice_manager.register_service(fastapi_server.get_service_config())\r\nservice_manager.register_service(flask_server.get_service_config())\r\n\r\n# \u062a\u0634\u063a\u064a\u0644 \u062c\u0645\u064a\u0639 \u0627\u0644\u062e\u062f\u0645\u0627\u062a\r\nservice_manager.start_all_services()\r\n```\r\n\r\n## \u0627\u0644\u0623\u0648\u0627\u0645\u0631 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629\r\n\r\n### \u0648\u0627\u062c\u0647\u0629 \u0633\u0637\u0631 \u0627\u0644\u0623\u0648\u0627\u0645\u0631\r\n\r\n```bash\r\n# \u0639\u0631\u0636 \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629 \u0648\u0627\u0644\u0623\u0648\u0627\u0645\u0631 \u0627\u0644\u0645\u062a\u0627\u062d\u0629\r\nhelpmero help\r\n\r\n# \u0639\u0631\u0636 \u062d\u0627\u0644\u0629 \u0627\u0644\u0646\u0638\u0627\u0645\r\nhelpmero status\r\n\r\n# \u062a\u0634\u063a\u064a\u0644 \u062e\u062f\u0645\u0629 \u0645\u0639\u064a\u0646\u0629\r\nhelpmero start <service_name>\r\n\r\n# \u0625\u064a\u0642\u0627\u0641 \u062e\u062f\u0645\u0629\r\nhelpmero stop <service_name>\r\n\r\n# \u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u062e\u062f\u0645\u0629\r\nhelpmero restart <service_name>\r\n\r\n# \u0639\u0631\u0636 \u0627\u0644\u0633\u062c\u0644\u0627\u062a\r\nhelpmero logs <service_name>\r\n\r\n# \u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u0645\u0648\u0627\u0631\u062f\r\nhelpmero monitor\r\n\r\n# \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062a\u062d\u0633\u064a\u0646\r\nhelpmero optimize\r\n```\r\n\r\n## \u0623\u0645\u062b\u0644\u0629 \u0645\u062a\u0642\u062f\u0645\u0629\r\n\r\n### Django \u0645\u0639 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a\r\n\r\n```python\r\nfrom runmero.frameworks import DjangoServer\r\nfrom runmero.core import ProcessManager\r\n\r\n# \u0625\u0639\u062f\u0627\u062f \u062e\u0627\u062f\u0645 Django\r\ndjango_server = DjangoServer(\r\n    name=\"django_app\",\r\n    port=8080,\r\n    settings_module=\"myproject.settings\",\r\n    wsgi_application=\"myproject.wsgi:application\"\r\n)\r\n\r\n# \u062a\u0634\u063a\u064a\u0644 \u0645\u0639 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a\r\nmanager = ProcessManager()\r\nmanager.register_process(django_server)\r\nmanager.start_process(\"django_app\")\r\n```\r\n\r\n### WebSocket \u0645\u0639 Tornado\r\n\r\n```python\r\nfrom runmero.frameworks import TornadoServer\r\nfrom runmero.core import ProcessManager\r\n\r\n# \u062e\u0627\u062f\u0645 Tornado \u0645\u0639 WebSocket\r\ntornado_server = TornadoServer(\r\n    name=\"websocket_server\",\r\n    port=9000,\r\n    enable_websockets=True\r\n)\r\n\r\nmanager = ProcessManager()\r\nmanager.register_process(tornado_server)\r\nmanager.start_process(\"websocket_server\")\r\n```\r\n\r\n## \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062a\u062d\u0633\u064a\u0646\r\n\r\n### \u062a\u062d\u0633\u064a\u0646 Termux\r\n\r\n```python\r\nfrom runmero.termux import TermuxOptimizer\r\n\r\n# \u062a\u0637\u0628\u064a\u0642 \u062a\u062d\u0633\u064a\u0646\u0627\u062a Termux\r\noptimizer = TermuxOptimizer()\r\noptimizer.optimize_battery()\r\noptimizer.optimize_memory()\r\noptimizer.optimize_cpu()\r\noptimizer.setup_persistence()\r\n```\r\n\r\n### \u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u0646\u0638\u0627\u0645\r\n\r\n```python\r\nfrom runmero.services import SystemMonitor\r\n\r\n# \u0628\u062f\u0621 \u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u0646\u0638\u0627\u0645\r\nmonitor = SystemMonitor()\r\nmonitor.start_monitoring()\r\n\r\n# \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0625\u062d\u0635\u0627\u0626\u064a\u0627\u062a \u0627\u0644\u0646\u0638\u0627\u0645\r\nstats = monitor.get_system_stats()\r\nprint(f\"\u0627\u0633\u062a\u0647\u0644\u0627\u0643 CPU: {stats['cpu_percent']}%\")\r\nprint(f\"\u0627\u0633\u062a\u0647\u0644\u0627\u0643 \u0627\u0644\u0630\u0627\u0643\u0631\u0629: {stats['memory_percent']}%\")\r\n```\r\n\r\n## \u0648\u0627\u062c\u0647\u0629 \u0628\u0631\u0645\u062c\u0629 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a (API)\r\n\r\n### ProcessManager\r\n\r\n```python\r\nfrom runmero.core import ProcessManager\r\n\r\nmanager = ProcessManager()\r\n\r\n# \u062a\u0633\u062c\u064a\u0644 \u0639\u0645\u0644\u064a\u0629\r\nmanager.register_process(process_instance)\r\n\r\n# \u062a\u0634\u063a\u064a\u0644 \u0639\u0645\u0644\u064a\u0629\r\nmanager.start_process(\"process_name\")\r\n\r\n# \u0625\u064a\u0642\u0627\u0641 \u0639\u0645\u0644\u064a\u0629\r\nmanager.stop_process(\"process_name\")\r\n\r\n# \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u062d\u0627\u0644\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a\r\nstatus = manager.get_process_status(\"process_name\")\r\n```\r\n\r\n### BackgroundServiceManager\r\n\r\n```python\r\nfrom runmero.services import BackgroundServiceManager\r\n\r\nservice_manager = BackgroundServiceManager()\r\n\r\n# \u062a\u0633\u062c\u064a\u0644 \u062e\u062f\u0645\u0629\r\nservice_manager.register_service(service_config)\r\n\r\n# \u062a\u0634\u063a\u064a\u0644 \u062c\u0645\u064a\u0639 \u0627\u0644\u062e\u062f\u0645\u0627\u062a\r\nservice_manager.start_all_services()\r\n\r\n# \u0625\u064a\u0642\u0627\u0641 \u062e\u062f\u0645\u0629 \u0645\u0639\u064a\u0646\u0629\r\nservice_manager.stop_service(\"service_name\")\r\n```\r\n\r\n## \u0627\u0644\u062f\u0639\u0645 \u0648\u0627\u0644\u0645\u0633\u0627\u0647\u0645\u0629\r\n\r\n### \u0627\u0644\u0645\u0633\u0627\u0647\u0645\u0629 \u0641\u064a \u0627\u0644\u0645\u0634\u0631\u0648\u0639\r\n\r\n\u0646\u0631\u062d\u0628 \u0628\u0645\u0633\u0627\u0647\u0645\u0627\u062a\u0643\u0645! \u064a\u0631\u062c\u0649 \u0642\u0631\u0627\u0621\u0629 [\u062f\u0644\u064a\u0644 \u0627\u0644\u0645\u0633\u0627\u0647\u0645\u0629](CONTRIBUTING.md) \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u062a\u0641\u0627\u0635\u064a\u0644 \u062d\u0648\u0644 \u0643\u064a\u0641\u064a\u0629 \u0627\u0644\u0645\u0633\u0627\u0647\u0645\u0629 \u0641\u064a \u062a\u0637\u0648\u064a\u0631 RunMero.\r\n\r\n### \u0627\u0644\u0625\u0628\u0644\u0627\u063a \u0639\u0646 \u0627\u0644\u0645\u0634\u0627\u0643\u0644\r\n\r\n\u0625\u0630\u0627 \u0648\u0627\u062c\u0647\u062a \u0623\u064a \u0645\u0634\u0627\u0643\u0644 \u0623\u0648 \u0644\u062f\u064a\u0643 \u0627\u0642\u062a\u0631\u0627\u062d\u0627\u062a\u060c \u064a\u0631\u062c\u0649 \u0641\u062a\u062d [issue \u062c\u062f\u064a\u062f](https://github.com/mero-palestine/runmero/issues) \u0639\u0644\u0649 GitHub.\r\n\r\n### \u0627\u0644\u062f\u0639\u0645 \u0627\u0644\u0641\u0646\u064a\r\n\r\n- **\u0627\u0644\u0648\u062b\u0627\u0626\u0642**: [runmero.readthedocs.io](https://runmero.readthedocs.io)\r\n- **GitHub**: [github.com/mero-palestine/runmero](https://github.com/mero-palestine/runmero)\r\n- **\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a**: mero@palestine.ps\r\n\r\n## \u0627\u0644\u062a\u0631\u062e\u064a\u0635\r\n\r\n\u0647\u0630\u0627 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0645\u0631\u062e\u0635 \u062a\u062d\u062a \u0631\u062e\u0635\u0629 MIT. \u0631\u0627\u062c\u0639 \u0645\u0644\u0641 [LICENSE](LICENSE) \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0643\u0627\u0645\u0644\u0629.\r\n\r\n## \u0634\u0643\u0631 \u0648\u062a\u0642\u062f\u064a\u0631\r\n\r\n\u062a\u0645 \u062a\u0637\u0648\u064a\u0631 RunMero \u0628\u0641\u062e\u0631 \u0641\u064a **\u0641\u0644\u0633\u0637\u064a\u0646** \ud83c\uddf5\ud83c\uddf8\r\n\r\n### \u0627\u0644\u0645\u0637\u0648\u0631\u0648\u0646\r\n\r\n- **mero** - \u0627\u0644\u0645\u0637\u0648\u0631 \u0627\u0644\u0631\u0626\u064a\u0633\u064a - [GitHub](https://github.com/mero-palestine)\r\n\r\n### \u0634\u0643\u0631 \u062e\u0627\u0635\r\n\r\n\u0634\u0643\u0631 \u062e\u0627\u0635 \u0644\u062c\u0645\u064a\u0639 \u0627\u0644\u0645\u0633\u0627\u0647\u0645\u064a\u0646 \u0648\u0627\u0644\u0645\u062e\u062a\u0628\u0631\u064a\u0646 \u0627\u0644\u0630\u064a\u0646 \u0633\u0627\u0639\u062f\u0648\u0627 \u0641\u064a \u062a\u0637\u0648\u064a\u0631 \u0647\u0630\u0647 \u0627\u0644\u0645\u0643\u062a\u0628\u0629.\r\n\r\n---\r\n\r\n**RunMero** - \u0642\u0648\u0629 \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0641\u064a \u0631\u0627\u062d\u0629 \u064a\u062f\u0643 \ud83d\udcaa\r\n\r\n\u0635\u0646\u0639 \u0628\u0640 \u2764\ufe0f \u0641\u064a \u0641\u0644\u0633\u0637\u064a\u0646 \ud83c\uddf5\ud83c\uddf8\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u0645\u0643\u062a\u0628\u0629 RunMero \u0627\u0644\u0642\u0648\u064a\u0629 \u0644\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0641\u064a \u0627\u0644\u062e\u0644\u0641\u064a\u0629 \u0645\u0639 \u062f\u0639\u0645 \u0623\u0637\u0631 \u0627\u0644\u0648\u064a\u0628 \u0627\u0644\u0645\u062a\u0639\u062f\u062f\u0629 \u0641\u064a \u0628\u064a\u0626\u0629 Termux - ",
    "version": "2.5.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/mero-palestine/runmero/issues",
        "Documentation": "https://runmero.readthedocs.io",
        "Homepage": "https://github.com/mero-palestine/runmero",
        "Repository": "https://github.com/mero-palestine/runmero.git",
        "Source Code": "https://github.com/mero-palestine/runmero"
    },
    "split_keywords": [
        "termux",
        " background-processes",
        " web-servers",
        " process-management",
        " fastapi",
        " flask",
        " django",
        " tornado",
        " android",
        " mobile-development",
        " palestine"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8f68a7b9842732a887602a9470d3e4e50f2e30a37b415e675b9288a0ba3dd1a7",
                "md5": "9e01d7becce8b7b1d1ae826be44fc3b5",
                "sha256": "7414ab6e17ddf11b43278552f1b07490cbd63fa9741d8cf6ea6f33d451f56847"
            },
            "downloads": -1,
            "filename": "runmero-2.5.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9e01d7becce8b7b1d1ae826be44fc3b5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 198253,
            "upload_time": "2025-08-20T15:49:27",
            "upload_time_iso_8601": "2025-08-20T15:49:27.694767Z",
            "url": "https://files.pythonhosted.org/packages/8f/68/a7b9842732a887602a9470d3e4e50f2e30a37b415e675b9288a0ba3dd1a7/runmero-2.5.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "10f56a01e482bc295724498bc00eefdd30874cba842e26f811e4bdaced5dd18e",
                "md5": "e4de12a6369046e19cadad314f2f3f13",
                "sha256": "046af9fcc8147c61a18ffb706dde24583025648c879224d905308ca33b8c82c3"
            },
            "downloads": -1,
            "filename": "runmero-2.5.0.tar.gz",
            "has_sig": false,
            "md5_digest": "e4de12a6369046e19cadad314f2f3f13",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 176003,
            "upload_time": "2025-08-20T15:49:29",
            "upload_time_iso_8601": "2025-08-20T15:49:29.492256Z",
            "url": "https://files.pythonhosted.org/packages/10/f5/6a01e482bc295724498bc00eefdd30874cba842e26f811e4bdaced5dd18e/runmero-2.5.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-20 15:49:29",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mero-palestine",
    "github_project": "runmero",
    "github_not_found": true,
    "lcname": "runmero"
}
        
Elapsed time: 1.80601s