Datasourceforcryptocurrency / docs /legacy /HF_SPACE_MIGRATION_GUIDE_FA.md
Really-amin's picture
Upload 577 files
b190b45 verified

راهنمای انتقال امن امکانات Space به یک Space جدید (بدون خراب شدن)

این راهنما برای انتقال امکانات Space در حال اجرا: Really-amin/Datasourceforcryptocurrency به یک Space جدید نوشته شده است؛ به‌طوری که مثل Space قبلی (Datasourceforcryptocurrency-2) به حالت Paused/Crash نرود.

مرجع Space اصلی: Datasourceforcryptocurrency


اصول طلایی (برای اینکه خراب نشود)

  • Runtime را تغییر ندهید: اگر Space اصلی Docker است، Space جدید هم Docker باشد.
  • پورت را ثابت نگه دارید: در HF Spaces پورت استاندارد 7860 است.
  • Entry-point را دستکاری نکنید: اگر Dockerfile با uvicorn hf_unified_server:app بالا می‌آید، همان را نگه دارید.
  • اول Space جدید را استیجینگ کنید: تا وقتی /api/health و صفحه اصلی OK نیست، Space جدید را عمومی نکنید.

روش ۱ (پیشنهادی و کم‌ریسک): Duplicate Space

  1. داخل صفحه Space اصلی بروید:
  2. گزینه Duplicate Space را بزنید (اگر در UI نمایش داده شود).
  3. در تنظیمات Duplicate:
    • SDK/Runtime = Docker
    • Visibility طبق نیاز (Private برای تست بهتر است)
  4. صبر کنید تا Build کامل شود.
  5. بعد از بالا آمدن:
    • https://<new-space>.hf.space/api/health باید 200 برگرداند.
    • https://<new-space>.hf.space/docs باید باز شود (اگر docs فعال است).

مزیت: دقیقاً همان سورس و تنظیمات را کپی می‌کند و ریسک «خراب شدن در انتقال» حداقل می‌شود.


روش ۲: انتقال با Git (اگر Duplicate در دسترس نبود)

A) ساخت Space جدید

  • یک Space جدید بسازید و Docker را انتخاب کنید.

B) انتقال سورس

  • سورس Space اصلی را به Space جدید Push کنید (بدون تغییرات اولیه).
  • بعد از Push، اجازه دهید Build انجام شود.

C) چک‌های ضروری بعد از Deploy

  • GET /api/health → وضعیت online
  • GET /docs → نمایش Swagger
  • تست چند endpoint سبک مثل:
    • GET /api/market/top
    • GET /api/news?limit=5

چرا Space قبلی ممکن است Paused شده باشد؟

رایج‌ترین علت‌ها در Docker Spaces:

  • Build fail به دلیل نسخه‌های نامشخص/ناسازگار dependency‌ها
  • OOM / کمبود RAM (خصوصاً با پکیج‌های سنگین مثل torch)
  • Port mismatch (مثلاً اپ روی 8000 بالا آمده ولی HF انتظار 7860 دارد)
  • Healthcheck fail (اگر healthcheck تعریف شده و endpoint پاسخ ندهد)

اگر خواستید بعد از انتقال امکانات جدید اضافه کنید

قاعده امن:

  • هر تغییر را در یک commit کوچک انجام دهید.
  • بعد از هر commit:
    • Build logs را نگاه کنید
    • /api/health را تست کنید
    • فقط سپس تغییر بعدی را انجام دهید