# RunMero - مكتبة إدارة العمليات في الخلفية

## نظرة عامة
**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\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"
}