GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • فهرست مطالب
  • گسترش
  • پشتیبانی از پلتفرم
  • اندیس API سطح بالا
  • گزارش یک اشکال
  • بهبود این صفحه
  • نمایش منبع
  • نمایش منبع ترجمه
  • اندیس
  • ماژول‌ها
  • Python
  • 3.15.2 documentation
  • کتابخانه‌ی استاندارد پایتون
  • شبکه‌سازی و ارتباط بین‌فرایندی

This view

  • Original page
  • New address

GeezerVison is showing python.github.io — گسترش

گسترش¶

جهت اصلی گسترش asyncio، نوشتن کلاس‌های سفارشی حلقه رویداد است. Asyncio ابزارهای کمکی دارد که می‌توان از آن‌ها برای ساده‌سازی این کار استفاده کرد.

نکته

اشخاص ثالث باید با احتیاط از کد asyncio موجود دوباره استفاده کنند؛ یک نسخه جدید پایتون مجاز است سازگاری عقب‌گرد را در بخش داخلی API نقض کند.

نوشتن یک حلقه رویداد سفارشی¶

asyncio.AbstractEventLoop تعداد بسیار زیادی متد را اعلام می‌کند. پیاده‌سازی همه‌ی آن‌ها از ابتدا کار خسته‌کننده‌ای است.

یک حلقه می‌تواند با ارث‌بری از asyncio.BaseEventLoop، پیاده‌سازی بسیاری از متدهای رایج را به‌رایگان به دست آورد.

به‌نوبه خود، جانشین باید تعدادی متد خصوصی را که در asyncio.BaseEventLoop اعلام‌شده‌اند اما پیاده‌سازی‌نشده‌اند، پیاده‌سازی کند.

برای مثال، loop.create_connection() آرگومان‌ها را بررسی می‌کند، آدرس‌های DNS را حل می‌کند و loop._make_socket_transport() را فراخوانی می‌کند که باید توسط کلاس مشتق‌شده پیاده‌سازی شود. متد _make_socket_transport() مستند نشده است و به‌عنوان یک API داخلی در نظر گرفته می‌شود.

سازنده‌های خصوصی Future و Task¶

asyncio.Future و asyncio.Task را هرگز نباید به‌صورت مستقیم ایجاد کرد؛ لطفاً به‌جای آن‌ها از کارخانه‌های متناظر loop.create_future() و loop.create_task() یا asyncio.create_task() استفاده کنید.

با این حال، حلقه‌های رویداد شخص ثالث ممکن است برای به‌دست آوردن کدی پیچیده و بسیار بهینه‌شده به‌صورت رایگان، از پیاده‌سازی‌های توکار future و task دوباره استفاده کنند.

برای این منظور، سازنده‌های خصوصی زیر فهرست شده‌اند:

Future.__init__(*, loop=None)¶

یک نمونه‌ی فیوچر توکار ایجاد کنید.

loop نمونه‌ای اختیاری از حلقه رویداد است.

Task.__init__(coro, *, loop=None, name=None, context=None)¶

یک نمونه از وظیفه توکار ایجاد کنید.

loop یک نمونه اختیاری از حلقه رویداد است. سایر آرگومان‌ها در توضیحات loop.create_task() شرح داده شده‌اند.

تغییر یافته در نسخه‌ی 3.11: آرگومان context اضافه شد.

پشتیبانی از طول عمر Task¶

یک پیاده‌سازی وظیفه شخص ثالث باید توابع زیر را فراخوانی کند تا یک وظیفه برای asyncio.all_tasks() و asyncio.current_task() قابل مشاهده باقی بماند:

asyncio._register_task(task)¶

یک وظیفه جدید را به‌عنوان مدیریت‌شده توسط asyncio ثبت کنید.

تابع را از یک سازنده‌ی وظیفه فراخوانی کنید.

asyncio._unregister_task(task)¶

ثبت یک task را از ساختارهای داخلی asyncio حذف کنید.

این تابع باید هنگامی فراخوانی شود که یک وظیفه در آستانه‌ی پایان قرار دارد.

asyncio._enter_task(loop, task)¶

وظیفه جاری را به آرگومان task تغییر دهید.

تابع را درست پیش از اجرای بخشی از هم‌روال تعبیه‌شده فراخوانی کنید (coroutine.send() یا coroutine.throw()).

asyncio._leave_task(loop, task)¶

وظیفه‌ی جاری را از task به None بازمی‌گرداند.

تابع را درست پس از اجرای coroutine.send() یا coroutine.throw() فراخوانی کنید.

© حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرم‌افزار پایتون نسخه ۲ منتشر شده است.
مثال‌ها، دستورالعمل‌ها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شده‌اند.
برای اطلاعات بیشتر به تاریخچه و مجوز مراجعه کنید.

بنیاد نرم‌افزار پایتون یک شرکت غیرانتفاعی است. لطفاً کمک مالی کنید.

آخرین به‌روزرسانی در نوامبر 12, 2026 (06:19 UTC). آیا اشکالی یافتید؟
ساخته شده با Sphinx 9.1.0.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.