ماژول ساده پایتون برای ارسال انبوه پیامک الگویی روی IPPanel Edge با صف تککارگر، همزمانی کنترلشده، ریترای خودکار و گزارش فارسی شیک.
مناسب برای ارسال هزاران پیامک — بدون دردسر rate limit و با خروجی خوانا.
- صف تککارگر: callهای همزمان رو به ترتیب اجرا میکنه.
- همزمانی کنترلشده با
ThreadPoolExecutor(تنظیمmax_workers). - ریترای خودکار روی خطاهای
429و5xx+ بکآف. - گزارش فارسی با ایموجی و آمار دقیق: موفق/ناموفق، کدهای وضعیت، نمونه خطاها.
- Python 3.9+
- کتابخانه
requests
نصب:
pip install requestsفایل ippanel_edge_queue.py رو تو پوشه پروژهتون کپی کنید.
بعدش:
from ippanel_edge_queue import send_bulk
AUTH = "توکن_احراز_هویت_شما"
FROM = "+983000505"
CODE = "کد_الگو"
recipients = ["+989123456789", "+989123456780"]
params = {"code": "اول", "saat": "20"}
result = send_bulk(
token=AUTH,
from_number=FROM,
pattern_code=CODE,
recipients=recipients,
params=params,
max_workers=12, # پیشنهاد: 8-16 — اگر 429 گرفتی کم کن
max_retries=3,
timeout_sec=15,
)
print(result.to_persian_summary())📊 گزارش ارسال پیامک الگو (Edge)
⏱️ مدت اجرا: 3.6 ثانیه
👥 تعداد کل گیرندگان: 2000
✅ موفق: 1988
❌ ناموفق: 12
🔢 آمار بر اساس کد وضعیت:
✅ 200: 1988
❌ 429: 8
❌ 422: 4
🧾 نمونه خطاها (حداکثر ۵ مورد):
• +98912XXXXXXX → 429: {...}
• +98913XXXXXXX → 422: {...}
token: رشته احراز هویت (همونی که تو cURL استفاده میکنی — معمولاً بدونBearer)from_number: شماره فرستنده (مثلاً+983000505)pattern_code: کد الگوی ثبتشدهrecipients: لیست شمارهها به فرمت E.164params: دیکشنری پارامترهای الگو — کلیدها باید دقیقاً مثل فیلدهای الگو باشنapi_url(اختیاری): پیشفرضhttps://edge.ippanel.com/v1/api/sendmax_workers: تعداد threadهای موازی — پیشنهاد 8-16max_retries: تعداد تلاش مجدد در صورت خطا — پیشفرض 3timeout_sec: تایماوت هر درخواست — پیشفرض 15
شیء برگشتی شامل:
ok_count,fail_count,totalper_status: دیکشنری تعداد بر اساس کد وضعیتdetails: لیست کامل نتایج هر گیرندهduration_sec: زمان اجرا
و مهمتر از همه:
result.to_persian_summary() # ← گزارش فارسی زیبا!
⚠️ توجه: در Edge، هر درخواست فقط یک گیرنده میپذیره — ماژول خودش برای هر شماره یه درخواست جدا میزنه.
- اگر
429میگیری →max_workersرو کم کن (مثلاً 8 یا 10). - کلیدهای
paramsباید دقیقاً با فیلدهای الگو یکی باشن — وگرنه422میگیری. - توکن رو هاردکد نکن! از متغیر محیطی استفاده کن.
Q: هر گیرنده پارامتر متفاوت داره؟
A: فعلاً پشتیبانی نمیشه. لیست رو بشکن و چندبار send_bulk رو با paramsهای مختلف صدا بزن.
Q: نیاز به Bearer دارم؟
A: نه — همون رشته خامی که تو cURL کار میکنه رو بده.