[TehPUG] Render Farm

دبیرستان دانشگاه صنعتی شریف info at sanatiSharif.ir
Mon Jul 6 13:52:41 CEST 2015


سلام و احترام،
ابتدا مقدمه ای عرض می کنم، شاید پایتون کارها بگن که نیاز به دانش فیلم و صدا
دارد ولی در انتها صورت تبدیل شده ی مسئله به یک مسئله ی کاملا پایتونی رو می
نویسم که به اطلاعاتی بیش از پایتون نیاز نداره!

مقدمه:
همانطور که احتمالا می دانید کار ما ( آلاء ) تولید فیلم های آموزشی رایگان و
با کیفیت هست، تا دانش آموزای سراسر کشور بتونن رایگان درس بخونن
ما می خواهیم برای افزایش سرعت و کیفیت تولید یک
render farm
درست کنیم که در قسمت هایی از آن نیاز به پایتون هست.
مفهوم رندر فارم لینوکس،
کلاینت یک فیلم را در نرم افزاری مثل ادوبی می زند رندر ولی به جای اینکه سی
پی یو خودش درگیر شود، چندین سرور لینوکسی عمل رندر را به صورت موازی انجام می
دهند.

نرم افزار ادوبی به طور رسمی اعلام کرده سرور فارم را پشتیبانی نمی کند.
لذا خودمان می خواهیم برنامه ای برای این کار با پایتون بنویسم.

و مسئله را به این صورت تقلیل می دهیم که یک سرور لینوکسی پردازش های رندر
نرم افزار ادوبی در محیط ویندوز را انجام دهد.

صورت اصلی مسئله پایتونی:

کافی است  یک برنامه کلاینت و سرور با خصوصیت زیر ایجاد شود:
برنامه سمت سرور :( سمت لینوکس اجرا می شود )

* این قابلیت را باید داشته باشد که با چندین کلاینت بتواند همزمان صحبت کند.

1. روی پورت 7070 گوش می کند. تا یک کلاینت متصل شود.

2. پس از درخواست اتصال کلاینت دو پورت خالی انتخاب می شود و یک پورت برای
کلاینت ارسال می شود. مثلا فرض کنید 7071 انتخاب شد.

3. دوباره نرم ابزار سروری به پورت 7070 خودش گوش می کند تا منتظر اتصال
کلاینت بعدی باشد.

حال بر گردیم اونجایی که یه پورت انتخاب شد،
سرور پس از ارسال پورت به سمت کلاینت و بعد از دریافت تایید پورت توسط کلاینت،
یک نرم افزار کامندی دیگه را تو شل اجرا می کند و اون پورت مثلا در اینجا 7071
را به این نرم افزار ورودی می دهد، بعد رو پورت 7070 به برنامه سمت کلاینت
اطلاع می دهد که برنامه را اجرا کرد، برنامه سمت کلاینت هم یک برنامه ی دیگر
کامندی را روی پورت 7071 اجرا می کند و رو پورت 7070 به سرور اطلاع می دهد که
کارش را انجام داد.
از اینجا به بعد سرور مدام خروجی نرم افزاری که اجرا کرده بود را روی پورت
7070 برای کلاینت ارسال می کند تا اینکه کار برنامه تمام و بسته شود.
کلاینت هم تاوقتی خروجی دریافت می کند، روی صفحه چاپ می کند که کاربر ببیند.

* طبیعتا سمت سرور به ازای هر کلاینت باید یک ترد اجرا شود تا سرور این قابلیت
را داشته باشد که با چندین کلاینت صحبت کند.
* هر کلاینت دارای آی پی جداست.

ممنون میشیم اگه کسی تو نوشتن این برنامه به ما کمک کنه و یا بگه که از کجا
باید شروع کرد.
زیرا ما پایتون کار نیستیم.

باتشکر
آلاء
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tehpug/attachments/20150706/3415c5dd/attachment.html>


More information about the TehPUG mailing list