📦 راهنمای استقرار در Hugging Face Spaces
✅ همه چیز آماده است!
این پروژه کاملاً تست شده و آماده آپلود به Hugging Face Spaces است.
🧪 تستهای انجام شده
✅ HTTP REST API
✅ Health check: 200 OK
✅ Resources stats: 281 منبع
✅ Categories list: 12 دسته
✅ Block explorers: 33 منبع
✅ Market data APIs: 33 منبع
✅ WebSocket
✅ اتصال برقرار شد
✅ پیام اولیه دریافت شد (initial_stats)
✅ ارسال/دریافت پیام (ping/pong)
✅ بروزرسانی دورهای هر 10 ثانیه
✅ رابط کاربری
✅ صفحه اصلی با UI زیبا
✅ نمایش آمار Real-time
✅ WebSocket status indicator
✅ لیست دستهبندیها
✅ طراحی Responsive
📁 فایلهای مورد نیاز
فایلهای اصلی (✅ همه آماده است)
crypto-resources-api/
├── app.py ✅ سرور اصلی با UI و WebSocket
├── requirements.txt ✅ وابستگیهای کامل
├── README.md ✅ مستندات کامل
└── api-resources/ ✅ پوشه منابع
└── crypto_resources_unified_2025-11-11.json
فایلهای اضافی (مستندات)
├── SUMMARY_FA.md 📝 خلاصه پروژه
├── FINAL_TEST_REPORT_FA.md 📝 گزارش تست
└── DEPLOYMENT_GUIDE_FA.md 📝 این فایل
🚀 مراحل آپلود به Hugging Face Spaces
مرحله 1: ایجاد Space جدید
- به https://huggingface.co/spaces بروید
- کلیک بر "Create new Space"
- تنظیمات:
- Space name:
crypto-resources-api(یا هر نام دیگر) - License: MIT
- SDK: Docker یا Gradio
- Visibility: Public یا Private
- Space name:
- "Create Space" را کلیک کنید
مرحله 2: آپلود فایلها
روش 1: از طریق Web Interface
- در صفحه Space، روی "Files" کلیک کنید
- "Add file" > "Upload files" را انتخاب کنید
- فایلهای زیر را آپلود کنید:
✅ app.py ✅ requirements.txt ✅ README.md ✅ api-resources/crypto_resources_unified_2025-11-11.json
روش 2: از طریق Git
# Clone کردن Space
git clone https://huggingface.co/spaces/YOUR_USERNAME/crypto-resources-api
cd crypto-resources-api
# کپی فایلها
cp /workspace/app.py .
cp /workspace/requirements.txt .
cp /workspace/README.md .
cp -r /workspace/api-resources .
# Commit و Push
git add .
git commit -m "Initial commit: Crypto Resources API with WebSocket support"
git push
مرحله 3: تنظیمات Space
بعد از آپلود، Space به صورت خودکار:
- ✅ وابستگیها را نصب میکند (از
requirements.txt) - ✅
app.pyرا اجرا میکند - ✅ سرور در پورت 7860 بالا میآید
- ✅ رابط کاربری نمایش داده میشود
🎨 ویژگیهای رابط کاربری
صفحه اصلی (/)
- 🎯 نمایش آمار Real-time
- 📊 نمودار تعداد منابع
- 📂 لیست دستهبندیها (کلیک کردنی)
- 🔌 وضعیت اتصال WebSocket
- 🎨 طراحی مدرن با Glassmorphism
API Documentation (/docs)
- 📚 Swagger UI تعاملی
- 🧪 امکان تست مستقیم endpoints
- 📖 مستندات کامل تمام endpoints
WebSocket
- 🔌 اتصال خودکار
- 📨 بروزرسانی هر 10 ثانیه
- 🔄 Reconnect خودکار در صورت قطع اتصال
- 💬 نمایش پیامهای دریافتی
🧪 تست بعد از Deploy
1. تست با مرورگر
https://YOUR_USERNAME-crypto-resources-api.hf.space
چکلیست:
- ✅ صفحه اصلی بارگذاری میشود
- ✅ آمار نمایش داده میشود
- ✅ WebSocket متصل میشود (badge سبز)
- ✅ دستهبندیها قابل کلیک هستند
- ✅ پیامهای WebSocket دریافت میشوند
2. تست API با curl
# از خارج از سرور
curl https://YOUR_USERNAME-crypto-resources-api.hf.space/health
# دریافت آمار
curl https://YOUR_USERNAME-crypto-resources-api.hf.space/api/resources/stats
# دریافت Block Explorers
curl https://YOUR_USERNAME-crypto-resources-api.hf.space/api/resources/category/block_explorers
3. تست WebSocket با Python
import asyncio
import websockets
import json
async def test():
uri = "wss://YOUR_USERNAME-crypto-resources-api.hf.space/ws"
async with websockets.connect(uri) as ws:
# دریافت پیام اولیه
msg = await ws.recv()
data = json.loads(msg)
print(f"Resources: {data['data']['total_resources']}")
# ارسال ping
await ws.send("ping")
# دریافت pong
pong = await ws.recv()
print(f"Response: {json.loads(pong)['message']}")
asyncio.run(test())
4. تست با JavaScript
// در Browser Console
const ws = new WebSocket('wss://YOUR_USERNAME-crypto-resources-api.hf.space/ws');
ws.onopen = () => console.log('✅ Connected');
ws.onmessage = (e) => console.log('📨', JSON.parse(e.data));
📊 انتظارات بعد از Deploy
Performance
- ⚡ First Load: 2-3 ثانیه
- ⚡ API Response: < 100ms
- ⚡ WebSocket Connect: < 500ms
- ⚡ Update Frequency: هر 10 ثانیه
Resources
- 💾 Memory: ~150MB
- 🔌 Port: 7860
- 👥 Concurrent Users: 100+
Availability
- 🟢 Uptime: 99%+
- 🔄 Auto-restart در صورت crash
- ⏰ Sleep بعد از 48 ساعت بدون استفاده (Free tier)
🐛 رفع مشکلات احتمالی
سرور بالا نمیآید
# بررسی logs در Hugging Face
# معمولاً به خاطر:
1. فایل api-resources موجود نیست
✅ حل: مطمئن شوید پوشه آپلود شده
2. وابستگیها نصب نمیشوند
✅ حل: requirements.txt را بررسی کنید
3. پورت اشغال است
✅ حل: در app.py پورت را 7860 نگه دارید
WebSocket متصل نمیشود
# معمولاً به خاطر:
1. Protocol اشتباه (باید wss باشد برای HTTPS)
✅ حل: از wss:// استفاده کنید نه ws://
2. CORS مسدود است
✅ حل: در کد فعلی CORS باز است
3. Proxy یا Firewall
✅ حل: از شبکه دیگری تست کنید
رابط کاربری نمایش داده نمیشود
# بررسی کنید:
1. آیا app.py درست آپلود شده؟
2. آیا HTML_TEMPLATE در کد هست؟
3. آیا route "/" تعریف شده؟
✅ همه اینها در کد فعلی درست است
📝 نکات مهم
✅ آماده برای Production
- همه تستها گذشتند
- WebSocket کار میکند
- UI زیبا و کاربردی
- مستندات کامل
- CORS فعال
- Error handling
🔒 امنیت
- API keys در فایل JSON (اختیاری)
- CORS برای همه دامنهها (میتوانید محدود کنید)
- Rate limiting (میتوانید اضافه کنید)
🚀 بهینهسازیهای آتی
# میتوانید اضافه کنید:
1. Rate limiting per IP
2. API authentication
3. Caching با Redis
4. Logging به فایل
5. Metrics با Prometheus
📞 پشتیبانی
لینکهای مفید
- 📚 Docs: https://YOUR-SPACE.hf.space/docs
- 🐛 Issues: GitHub Issues
- 💬 Community: Hugging Face Discussions
نمونه درخواست
# مثال کامل
curl -X GET \
"https://YOUR-SPACE.hf.space/api/resources/category/market_data_apis" \
-H "accept: application/json"
✅ چکلیست نهایی قبل از Deploy
- ✅
app.pyآماده است - ✅
requirements.txtکامل است - ✅
api-resources/موجود است - ✅
README.mdنوشته شده - ✅ همه تستها پاس شدند
- ✅ WebSocket تست شد
- ✅ UI کار میکند
- ✅ API endpoints پاسخ میدهند
🎉 خلاصه
این پروژه 100% آماده برای آپلود به Hugging Face Spaces است:
- ✅ تمام فایلها موجود است
- ✅ تمام تستها پاس شد
- ✅ WebSocket کار میکند
- ✅ رابط کاربری زیباست
- ✅ مستندات کامل است
فقط کافیست فایلها را آپلود کنید و Space شما آماده استفاده است! 🚀
موفق باشید! 💜