في بداية بنيت الفيسبوك باستخدام PHP و MySQL، ولكن كما المرور وحجم الشبكة زيادة، وكذلك فعل متطلباتها لتسليم أفضل وأسرع من المحتوى في الوقت الحقيقي.
وهذا قاد الفريق الفيسبوك الخوض في تقنيات ولغات أخرى خارج PHP، والشركة سرعان ما تحولت أنه مشاهد لبيثون، وهي لغة البرمجة المستخدمة من قبل جوجل لبناء محرك البحث الخاص بها.
وأسفرت جهود الفريق إلى منتج يسمى تورنادو، إطار بيثون مصممة خصيصا للعمل مع وصلات HTTP الخام في عدم عرقلة طريقة بسيطة غير متزامن.
واستلهم
وتورنادو بواسطة أدوات أخرى مثل webapp على Web.py وجوجل، ولكن يشمل أيضا ميزات اضافية كذلك.
وفي وسط الإطار بأكمله يقيم خادم HTTP قوية، والتي تتعزز مجموعة من وحدات للتعامل مع المحتوى I18N، سلسلة التلاعب، وتوليد الإخراج، العمليات غير المتزامنة، رمز طرف ثالث، وسجلات، وهلم جرا.
وعلاوة على ذلك على كاساندرا قوي>، تورنادو هي واحدة من أنجح تطبيقات المصدر المفتوح الفيسبوك حتى الآن.
ما هو جديد في هذا الإصدار :
- وحدات جديدة: tornado.locks وtornado.queues لى>
ما هو جديد في الإصدار 4.2:
- وحدات جديدة: tornado.locks وtornado.queues لى>
ما هو جديد في الإصدار 4.1:
- والديكور وtornado.web.stream_request_body يسمح الملفات الكبيرة لتكون تم تحميلها مع استخدام الذاكرة محدودة. لى>
- وCoroutines الآن أسرع وعلى نطاق واسع وتستخدم في جميع أنحاء تورنادو نفسها. المزيد من الطرق الآن يعود المستقبلية، بما في ذلك معظم وسائل IOStream وRequestHandler.flush. لى>
يسمح - والعديد من طرق تجاوز المستخدم الآن للعودة إلى المستقبل من أجل السيطرة التدفق. لى>
ويشارك - ورمز المتعلقة HTTP-الآن بين tornado.httpserver، tornado.simple_httpclient وtornado.wsgi الوحدات، مما دعم لميزات مثل المقسم والترميز GZIP أكثر اتساقا. HTTPServer الآن يستخدم واجهات مندوب الجديدة المحددة في tornado.httputil بالإضافة إلى القديمة واجهة واحدة رد الاتصال به. لى>
- وحدة جديدة tornado.tcpclient يخلق اتصالات TCP مع عدم عرقلة DNS، SSL المصافحة، ودعم ل IPv6. لى>
ما هو جديد في الإصدار 3.2.2:
- ويتم ترميز رمز XSRF الآن مع قناع عشوائي على كل طلب. وهذا يجعل من آمن أن تدرج في صفحات مضغوط دون أن يكون عرضة للهجوم خرق. وهذا ينطبق على معظم التطبيقات التي تستخدم كل من xsrf_cookies والخيارات GZIP (أو لديك GZIP التي تطبقها وكيل). لى>
- وإذا تم تشغيل تورنادو 3.2.2 في نفس الوقت الإصدارات القديمة في نفس المجال، وهناك بعض الإمكانيات لقضايا مع الإصدارات المختلفة الكعكة. وxsrf_cookie_version إعداد التطبيق = 1 يمكن أن تستخدم لفترة انتقالية لتوليد تنسيق أقدم ملف على ملقمات أحدث. لى>
- وtornado.platform.asyncio هو الآن متوافقة مع الإصدار 0.3 trollius. لى>
ما هو جديد في الإصدار 3.2.1:
- وتنسيق قعت القيمة تستخدم من قبل RequestHandler.set_secure_cookie وRequestHandler.get_secure_cookie قد تغير ليكون أكثر أمنا. هذا هو تغيير التخريبية. وظائف secure_cookie تأخذ المعلمات نسخة جديدة لدعم الانتقال بين صيغ ملفات تعريف الارتباط. لى>
- وتنسيق ارتباط جديد بإصلاح مشكلة عدم حصانة التي قد تكون موجودة في التطبيقات التي تستخدم الكوكيز متعددة حيث اسم الكعكة واحد هو بادئة اسم آخر. لى>
- لتقليل انقطاع، سيتم قبول ملفات تعريف الارتباط في تنسيق أقدم افتراضيا حتى تنتهي. التطبيقات التي قد تكون عرضة للخطر يمكن رفض كافة ملفات تعريف الارتباط في الصيغة القديمة عن طريق تمرير min_version = 2 إلى RequestHandler.get_secure_cookie. لى>
ما هو جديد في الإصدار 3.2:
- وتطبيق جديد وضع default_handler_class يمكن استخدامها لبسهولة انشاء مخصص 404 صفحة. لى>
- وإعدادات التطبيق جديد autoreload، compiled_template_cache، static_hash_cache، وserve_traceback يمكن أن تستخدم للسيطرة على الجوانب الفردية من وضع التصحيح. لى>
- وأساليب جديدة RequestHandler.get_query_argument وRequestHandler.get_body_argument والجديدة سمات HTTPRequest.query_arguments وHTTPRequest.body_arguments تسمح بالوصول إلى الحجج دون اختلاط تلك من سلسلة الاستعلام مع تلك من الجسم الطلب. لى>
- وRequestHandler.decode_argument والمتعلقة أساليب الآن تثير HTTPError (400) بدلا من UnicodeDecodeError عندما لا يمكن فك الحجة. لى>
- وRequestHandler.clear_all_cookies يقبل الآن مجال ومسار الحجج، تماما مثل clear_cookie. لى>
- وأصبح من الممكن الآن لتحديد معالجات بالاسم عند استخدام الطبقة URLSpec. لى>
- وتطبيق يقبل الآن 4 الصفوف لتحديد معلمة اسم (والذي كان مطلوبا من قبل بناء الكائن URLSpec بدلا من الصفوف (tuple)). لى>
- والثابتة رسالة خطأ غير صحيحة عند عودة أساليب معالج قيمة أخرى غير بلا أو مستقبل. لى>
- ولن يتم تسجيل الاستثناءات مرتين عند استخدام كلاasynchronous و @gen.coroutine. لى>
ما هو جديد في الإصدار 3.1:
- ولقد تم كسر العديد من الدورات المرجعية في أنحاء حزمة، مما يتيح لجمع القمامة أكثر كفاءة على CPython. لى>
- وإسكات بعض رسائل سجل عندما يتم فتح اتصالات وعلى الفور أغلقت (أي مسح الميناء)، أو في حالات أخرى تتعلق صلات مغلقة. لى>
- وspeedups صغيرة مختلفة: HTTPHeaders قضية التطبيع، الكائنات الوكيل UIModule، precompile بعض regexes لى>.
ما هو جديد في الإصدار 3.0.2:
- وtornado.auth.TwitterMixin الآن افتراضات إلى الإصدار 1.1 من تويتر API، بدلا من الإصدار 1.0 الذي يجري وقفها على يونيو 11. كما يستخدم الآن HTTPS عند التحدث إلى تويتر. لى>
- وإصلاح تسرب الذاكرة المحتملة مع سلسلة طويلة من gen.coroutine أو gen.engine الوظائف. لى>
ما هو جديد في الإصدار 3.0:
- وإن `` حجة callback`` إلى العديد من الأساليب غير متزامن الآن اختيارية، وهذه الطرق بإرجاع `.Future`. وحدة `tornado.gen` يفهم الآن` `Futures``، وهذه الطرق يمكن استخدامها مباشرة دون` .gen.Task` المجمع. لى>
- وظيفة جديدة `.IOLoop.current` إرجاع` .IOLoop` أن يعمل على الترابط الحالي (في مقابل `.IOLoop.instance`، والتي ترجع لموضوع معين (عادة الخيط الرئيسي) IOLoop. لى>
- وفئة جديدة `tornado.netutil.Resolver` يوفر واجهة غير متزامن لقرار DNS. لى>
- وفئة جديدة `tornado.process.Subprocess` يلتف` `subprocess.Popen` مع وصول .PipeIOStream` لاصفات ملف الطفل. لى>
- و`.IOLoop` لديها الآن ثابت` تكوين & # x3c؛ .Configurable.configure & # x3e؛ `أسلوب مثل واحد على` .AsyncHTTPClient`، والتي يمكن استخدامها لتحديد تنفيذ `.IOLoop` غير افتراضي. * `.IOLoop` يمكن الآن استخدام اختياريا على مدار الساعة رتيب إذا كانت متوفرة. لى>
ما هو جديد في الإصدار 2.4.1:
- وإصلاح تسرب الذاكرة في tornado.stack_context التي كانت
على الأرجح لا سيما مع وظائف تشغيل طويلة @ gen.engine. لى>
- وtornado.auth.TwitterMixin يعمل الآن على بيثون 3. لى>
- وإصلاح الخلل الذي IOStream.read_until_close مع رد يتدفقون سوف أحيانا تمرير قطعة الأخيرة من البيانات إلى رد نهائي بدلا من رد التدفق. لى>
ما هو جديد في الإصدار 2.4:
- والثابتة بيثون 3 الخلل في tornado.auth، tornado.locale وtornado.wsgi. لى>
- وOAuthMixin يقبل الآن ومثل؛ OOB ومثل؛ باعتباره callback_uri. لى>
- وOpenIDMixin الآن يعود أيضا مجال claimed_id للمستخدم. لى>
- وتسلسل إيقاف تشغيل tornado.platform.twisted هو الآن أكثر توافقا. لى>
- والتكوين تسجيل المستخدمة في tornado.options هو الآن أكثر تسامحا من سلاسل بايت غير أسكي. لى>
ما هو جديد في الإصدار 2.3:
- و`يدعم tornado.httpclient.HTTPClient` الآن نفس منشئ الحجج الكلمة كما `AsyncHTTPClient`. لى>
- ويعمل `` حجة الكلمة max_clients`` إلى `AsyncHTTPClient.configure` الآن. لى>
- و`tornado.simple_httpclient` الآن تؤيد` `` `OPTIONS`` وطرق PATCH`` HTTP. لى>
- و`tornado.simple_httpclient` هو أفضل حول إغلاق مآخذ لها بدلا من تركهم لجمع القمامة. لى>
- و`tornado.simple_httpclient` يتحقق بشكل صحيح شهادات SSL لعناوين المواقع التي تحتوي على الحرفية الإصدار IPv6 (هذه الأخطاء أثرت بيثون 2.5 و 2.6). لى>
- و`tornado.simple_httpclient` لم يعد يتضمن أوراق اعتماد المصادقة الأساسية في رأس Host``` `عندما يتم استخراج وثائق التفويض من URL. لى>
- و`tornado.simple_httpclient` لم يعد بتعديل القاموس رأس الموفر المتصل، والتي تسببت في مشاكل عند التحويلات التالية. لى>
- و`tornado.curl_httpclient` الآن يدعم شهادات SSL العميل (باستخدام نفس` `` `client_cert`` والحجج client_key`` كما` tornado.simple_httpclient`. لى>
ما هو جديد في الإصدار 2.2.1:
- وإصلاحات الأمان: لى>
- و`tornado.web.RequestHandler.set_header` الآن يعقم صحيح قيم الإدخال للحماية من حقن رأس، وتقسيم ردا على ذلك، وما إلى ذلك (فقد حاول دائما أن تفعل هذا، ولكن كان الاختيار غير صحيح). علما بأن الموجهات، والمصدر الأكثر احتمالا لهذه الحشرات، محمية بموجب شيك منفصل في `RequestHandler.redirect`. لى>
- وإصلاحات الشوائب: لى>
- والملونة تكوين التسجيل في `tornado.options` متوافق مع بايثون 3.2.3 (و 3.3). لى>
ما هو جديد في الإصدار 2.2:.
- وتحديث وتوسيع الدعم WebSocket لى>
- وتحسين التوافق في جسر ملتوية / تورنادو. لى>
- والأخطاء قالب تولد الآن أفضل آثار المكدس. لى>
- وأفضل معالجة في `tornado.gen` استثناء. لى>
ما هو جديد في الإصدار 2.1.1:
- وإصلاحات الشوائب: لى>
<لى> التعامل مع ثابت من وصلات مغلقة مع `` epoll`` (أي لينكس) `` IOLoop``. سابقا، يمكن أن تغلق الاتصالات أغلقت في وقت مبكر جدا، والتي غالبا ما تتجلى ومثل؛ تيار مغلق ومثل؛ استثناءات في `` SimpleAsyncHTTPClient``. لى> - وإصلاح الحالة التي المقسم الردود يمكن أن تكون مغلقة قبل الأوان، مما يؤدي إلى إخراج اقتطاع. لى>
- و`` IOStream.connect`` الآن تقارير الأخطاء أكثر اتساقا عبر قطع الأشجار والاستدعاء وثيق (هذا يؤثر على الاتصالات على سبيل المثال لLOCALHOST على فري). لى>
- و`` IOStream.read_bytes`` تقبل مرة أخرى على حد سواء `` `` int`` والحجج long``. لى>
- و`` PeriodicCallback`` لم يعد يعمل بشكل متكرر عندما `` تكرار IOLoop`` إكمال أسرع من حل `` time.time () `` (أساسا مشكلة في نظام التشغيل Windows). لى>
ما هو جديد في الإصدار 2.1.0:
- وتمت إزالة Diginotar من ملف شهادات CA الافتراضي يستخدمه `SimpleAsyncHTTPClient` لى>
- لتسهيل بعض سيناريوهات متعددة العمليات المتقدمة، `` HTTPServer`` لديه طريقة جديدة `` add_sockets``، ورمز مأخذ فتح غير متوفر بشكل منفصل كما `tornado.netutil.bind_sockets`. لى>
- وتمت إزالة دعم لملفات تعريف الارتباط آمنة كتبه قبل 1.0 إطلاقات تورنادو. لى>
- وتم تحسين دعم ويندوز. لى>
ما هو جديد في الإصدار 2.0.0:
- والتغييرات الرئيسية: لى>
- والناتج قالب وهرب تلقائيا بشكل افتراضي. لى>
- ويتم simple_httpclient تنفيذ AsyncHTTPClient الافتراضي الآن. لى>
- وبيثون 3.2 ويدعم الآن. لى>
- والتوافق الوراء: لى>
- وتمكين قالب autoescaping افتراضيا. تطبيقات الترقية من الإصدار السابق من تورنادو يجب إما autoescaping تعطيل أو تكييف نماذج للعمل معها. بالنسبة لمعظم التطبيقات، وأبسط طريقة للقيام بذلك هي لتمرير autoescape = بلا منشئ التطبيق. لى>
- والتطبيقات التي ترغب في مواصلة استخدام curl_httpclient بدلا من simple_httpclient القيام بذلك عن طريق استدعاء AsyncHTTPClient.configure (ومثل؛ tornado.curl_httpclient.CurlAsyncHTTPClient ومثل؛) في بداية العملية. وسيكون للمستخدمين من بيثون 2.5 ربما تريد استخدام curl_httpclient كما simple_httpclient يعتمد فقط SSL على بيثون 2.6 +. لى>
- وبيثون 3 التوافق تشارك العديد من التغييرات في جميع أنحاء مصدر برنامج، لذلك يتم تشجيع المستخدمين لاختبار تطبيقاتهم أكثر دقة من المعتاد عند الترقية إلى هذا الإصدار. لى>
- وتغييرات أخرى في الإصدار 4.1: لى>
- وقوالب تدعم عدة توجيهات جديدة: - {٪ autoescape٪ ...} للسيطرة على الهروب السلوك - {٪ الخام٪ ...} للإخراج يمكن إلغاؤه - {٪ وحدة ...٪} لاستدعاء UIModules * {حدة٪ قالب (مسار ** kwargs)٪} قد الآن أن تستخدم لاستدعاء قالب آخر مع مساحة مستقلة. لى>
- وجميع الاسترجاعات IOStream الآن تشغيل مباشرة على IOLoop عبر add_callback. لى>
- وHTTPServer الآن يدعم الإصدار IPv6 حيثما كان ذلك متاحا. لتعطيل تمرير الأسرة = socket.AF_INET إلى HTTPServer.bind (). لى>
- وHTTPClient الآن يدعم الإصدار IPv6، شكلي عبر allow_ipv6 = منطقي على HTTPRequest. allow_ipv6 التخلف إلى false على simple_httpclient وصحيح على curl_httpclient. لى>
- وRequestHandlers يمكن استخدام ترميز غير UTF-8 لمعلمات الاستعلام عن طريق تجاوز decode_argument (). لى>
التحسينات - والأداء، خاصة بالنسبة للتطبيقات التي تستخدم الكثير من IOLoop المهلات. لى>
- وHTTP طريقة OPTIONS لم يعد يتطلب رمز XSRF. لى>
- والناتج JSON (RequestHandler.write (ديكت)) تحدد الآن نوع المحتوى إلى التطبيق / سلمان. لى>
- وإيتاغ حساب يمكن الآن تخصيص أو تعطيل عن طريق تجاوز RequestHandler.compute_etag. لى>
- ولم يعد معتمدا متغير البيئة USE_SIMPLE_HTTPCLIENT. استخدام AsyncHTTPClient.configure بدلا من ذلك. لى>
ما هو جديد في الإصدار 1.2.1:
- ويحتوي هذا الإصدار على اثنين فقط من التغييرات الصغيرة النسبية إلى الإصدار 1.2: لى>
تم تحديث - وFacebookGraphMixin للعمل مع التغيير الأخير إلى API الفيسبوك. لى>
- والجري و مثل؛ setup.py تثبيت ومثل؛ لن محاولة تثبيت pycurl تلقائيا. وهذا لا تعمل بشكل جيد على منصات حيث أفضل طريقة لتثبيت pycurl هو عن طريق ما يشبه الرابطة بين الحصول على بدل easy_install. هذا هو ترقية هامة إذا كنت تستخدم FacebookGraphMixin، لكن على خلاف ذلك يمكن تجاهلها بأمان. لى>
ما هو جديد في الإصدار 1.2.0:
- وهذا الإصدار يتضمن التغيير الأمنية إلى الوراء غير متوافق من الإصدار 1.1.1. لى>
- لاستبدال بشفافية tornado.httpclient.AsyncHTTPClient مع هذا التطبيق الجديد، يمكنك تعيين البيئة USE_SIMPLE_HTTPCLIENT متغير = 1 لى>
ويتم - وطلب قطع الأشجار الآن من قبل التطبيق بدلا من RequestHandler. قد تكون مخصصة السلوك تسجيل من قبل أي تجاوز Application.log_request في فئة فرعية أو عن طريق تمرير log_function بمثابة إعداد التطبيق. لى>
<قوية> ما هو جديد في الإصدار 1.1.1:
- وتورنادو 1.1.1 هو الأمن الوراء غير متوافق التحديث الذي يحدد نقطة ضعف XSRF. لى>
ما هو جديد في الإصدار 1.1:
- والتغييرات: لى>
وظائف - وRequestHandler.async_callback وذات الصلة في فئات أخرى لم تعد مطلوبة في معظم الحالات (على الرغم من انها غير ضارة للتواصل لى>
- واستخدامها). سوف يسبب استثناءات Uncaught الآن طلب أن تكون مغلقة حتى في معاودة الاتصال بكم. إذا كنت غريبة كيف يعمل هذا، انظر وحدة tornado.stack_context جديدة. لى>
- والوحدة tornado.testing جديدة على دعم رمز القائمة IOLoop اختبار وحدة غير المتزامن. لى>
- وتم إعادة كتابة AsyncHTTPClient (كان التنفيذ الجديدة المتاحة كما AsyncHTTPClient2 في تورنادو 1.0؛ دعم كلا أسماء الوراء لى>
- والتوافق). لى>
- وزارها وحدة tornado.auth عددا من التحديثات، بما في ذلك دعم أوث 2.0 وAPI الفيسبوك الرسم البياني، ورفع الدعم تويتر وجوجل لأوث 1.0A. لى>
- والوحدة websocket هو العودة وتدعم أحدث إصدار (76) من البروتوكول websocket. لاحظ أن واجهة هذه الوحدة هي مختلفة من وحدة websocket التي ظهرت في مرحلة ما قبل 1.0 إصدارات تورنادو. لى>
- وأسلوب جديد RequestHandler.initialize () يمكن تجاوز في الفئات الفرعية لتبسيط التعامل مع الحجج من URLSpecs. تم توثيق تسلسل أساليب دعا أثناء التهيئة في http://tornadoweb.org/documentation#overriding-requesthandler-methods لى>
- وget_argument () وما يتصل بها من أساليب العمل الآن على طلبات PUT بالإضافة إلى POST. لى>
- والوحدة httpclient الآن يدعم كلاء HTTP. لى>
- وعندما HTTPServer يتم تشغيله في وضع SSL، ومصافحة SSL هي الآن غير مؤمن. لى>
- والعديد من الإصلاحات أصغر الشوائب والتحديثات الوثائق لى>
الملاحظات - وخلف التوافق: لى>
- ورغم أن معظم مستخدمي تورنادو لا ينبغي أن يكون التعامل مع وحدة stack_context مباشرة، ومستخدمي حمامات ترابط وبنيات مماثلة قد تحتاج إلى استخدام stack_context.wrap و / أو NullContext لتجنب تسرب الذاكرة. لى>
- وإن AsyncHTTPClient الجديد لا يزال يعمل مع النسخة libcurl 7.16.x، ولكن أداء أفضل عند كل libcurl وpycurl ما لا يقل عن الإصدار 7.18.2. لى>
المعاملات - وأوث التي تحت الإصدارات السابقة من وحدة المصادقة لا يمكن أن تكتمل في إطار وحدة جديدة. وهذا ينطبق فقط على عملية الترخيص الأولية؛ مرة واحدة يتم إصدار رمز المصرح يعمل هذا المنوال مع أي إصدار. لى>
<قوية> متطلبات : ل
- وبيثون 2.6 أو أعلى لى>
لم يتم العثور على التعليقات