বিশ্বব্যাপী অনুরোধ প্রসঙ্গে - অ্যান্টি-প্যাটার্ন?


12

আমি আজ আমার এক সহকর্মীর সাথে পাইথন ওয়েব ফ্রেমওয়ার্ক এবং তাদের সম্পর্কে আমাদের প্রভাব সম্পর্কে কথা বলছিলাম। আমি তাকে বলেছিলাম যে আমার মনে হয় বিশ্বব্যাপী অনুরোধ করা ফ্লাস্কের দুর্গন্ধযুক্ত গন্ধ এবং এটি একটি বিরোধী-নিদর্শন।

ডক্স অনুরোধ প্রসঙ্গ সম্পর্কে বলে,

বিপরীতে, অনুরোধ পরিচালনার সময়, আরও কয়েকটি বিধি বিদ্যমান:

  • একটি অনুরোধ সক্রিয় থাকাকালীন, প্রাসঙ্গিক স্থানীয় অবজেক্টস (ফ্লাস্ক.প্রভেস্ট এবং অন্যান্য) বর্তমান অনুরোধটির দিকে ইঙ্গিত করে।
  • যে কোনও কোড যে কোনও সময় এই বিষয়গুলি ধরে রাখতে পারে।

আমি মনে করি এই নকশার সিদ্ধান্তের পিছনে ধারণাটি আমি বুঝতে পেরেছি - অ্যাপ্লিকেশনটিকে আরও সহজ করে তুলতে। এটি কেবল একটি আপস, যেমন থ্রেড স্থানীয়দের ক্ষেত্রে :

হ্যাঁ থ্রেড লোকাল ব্যবহার করা সাধারণত তেমন উজ্জ্বল ধারণা নয়। তারা সার্ভারগুলির জন্য ঝামেলা সৃষ্টি করে যা থ্রেডের ধারণার ভিত্তিতে নয় এবং বৃহত অ্যাপ্লিকেশনগুলি বজায় রাখা আরও কঠিন করে তোলে। তবে ফ্লাস্ক কেবল বড় অ্যাপ্লিকেশন বা অ্যাসিনক্রোনাস সার্ভারের জন্য ডিজাইন করা হয়নি। ফ্লাস্ক একটি traditionalতিহ্যবাহী ওয়েব অ্যাপ্লিকেশনটি দ্রুত এবং সহজেই লিখতে চায়।

বর্তমান অনুরোধের তথ্যের সাথে কোনও বৈশ্বিক বস্তুকে প্যাচ করা কি কোনও বিরোধী-নিদর্শন হিসাবে কাজ করে?

আমি বিশ্বাস করি এটি হ'ল, কারণ এটি স্থির কোড বিশ্লেষককে একটি বিশ্বব্যাপী রাষ্ট্রের দৃষ্টিতে, যদিও তা নয়। এবং আমি প্রোগ্রামার হিসাবে ডক্সগুলি মনোযোগ সহকারে না পড়ে এটি কীভাবে কাজ করে তা বুঝতে পারছি না । এবং এটি পরীক্ষার ফলাফল রয়েছে

দর্শনগুলির আর্গুমেন্ট হিসাবে অনুরোধটি পাস করা কি ভাল অনুশীলন নয়? আমি মনে করি এটি আরও পাঠযোগ্য, সুস্পষ্ট এবং ডিবাগ করা সহজ। এবং বৈশ্বিক রাষ্ট্র এড়ায়।


2
এ জাতীয় প্রতিষেধকগুলির সুনির্দিষ্ট নেতিবাচক প্রভাবগুলি কী হতে পারে তা আপনি সত্যিই বলেননি। আমি ঝাড়ফুঁক করা সাধারণতাকে বিশ্বাস করি না যার সত্যিক ভিত্তি নেই।
রবার্ট হার্ভে

2
ভাল প্রশ্ন, তবে দুঃখের সাথে অনেক মানের উত্তর নেই
স্লিপকালাল

উত্তর:


4

অনেক ওয়েব ফ্রেমওয়ার্কের একই কাঠামো রয়েছে: একটি বিশ্বব্যাপী অনুরোধ। এক অর্থে, এটি করা সঠিক জিনিস কারণ ওহে, এক সময়ে সত্যিই কেবল একটি অনুরোধ আছে।

সুতরাং প্যারামিটার হিসাবে অনুরোধটি পাস করার কোনও অর্থ আছে কি? না। অনুরোধটি হ'ল অনুরোধ, এবং প্যারামিটারগুলি বিভিন্ন সময়ে বিভিন্ন জিনিস পাস করার জন্য।

বাস্তব সমস্যা আসে হিসাবে আপনি একটি বৃহত্তর আবেদন নিম্ন মাত্রায় বিবেচনা শুরু। বিশ্বব্যাপী অনুরোধের সাথে বিশ্বব্যাপী অনুরোধটি অ্যাক্সেস করে এমন জায়গা জুড়ে কোড লেখার লোভ রয়েছে। এটা খুব খারাপ জিনিস । এটি কোডের বিভিন্ন অংশের মধ্যে মিলন তৈরি করে, জিনিসগুলিকে পরিবর্তন করা শক্ত করে তোলে এবং জিনিসগুলি পরীক্ষা করা শক্ত করে তোলে।

সুতরাং আমার উত্তরটি হ'ল: বিশ্বব্যাপী অনুরোধ রাখুন এবং এটির সাথে বেঁচে থাকুন। তবে, যেখানেই কোনও পৃথক মডিউল বা ফাংশনটির পুরো অনুরোধের প্রয়োজন নেই, কেবলমাত্র প্যারামিটার হিসাবে প্রয়োজনীয় ডেটাটি পাস করুন pass কেবলমাত্র রেফারার, বা ইউআরএল, বা কমান্ড লেজ এবং আপনার কার্যগুলিতে আপনার যা কিছু বিট দরকার তা পাস করুন। এটি কোডটি মডুলার রাখতে, সংযোজন হ্রাস করতে এবং পরীক্ষার দক্ষতা উন্নত করতে সহায়তা করবে।

ক্ষুদ্র প্রোগ্রামগুলির জন্য এটি খুব কমই গুরুত্বপূর্ণ, তবে বৃহত্তরগুলির জন্য এটি সত্যিকারের জীবনকালীন হতে পারে।


3

(আমি সাহসী হয়ে এটিকে উত্তর দেব, যদিও আমি কিছু ডাউনওয়েট পেতে পারি))

ফ্লাস্ক একটি মাইক্রো কাঠামো; ফ্রিলস ছেড়ে দেওয়ার সময় আপনি সরলতা থেকে উপকৃত হন। অন্ত্র স্তরে থাকাকালীন আমি আপনার সাথে একমত, আমি জানি যে আমার প্রয়োজনীয় মাল্টি-থ্রেডিং দেওয়ার জন্য আমি একটি দোকানে ফ্লাস্ক + গ্যানিকর্ন ব্যবহার করেছি। এটি সত্যিই ভাল কাজ করেছে। স্ক্রিপ্টের প্রতিটি উদাহরণ সবেমাত্র একটি অনুরোধ (যেমন একটি থ্রেড) হস্তান্তর করেছে, এবং গ্যানিকর্ন একাধিক থ্রেডের মধ্যে "ফ্যান আউট" পরিচালনা করেছে। এটা দুর্দান্ত ছিল।

সুতরাং আপনি অনুভূত খারাপ দিকটি অনুভব করছেন - যে একাধিক থ্রেড বিশ্বব্যাপী রাষ্ট্রের পক্ষে লড়াই করতে পারে - কেবল কোনও সমস্যা নয়, কারণ এটি প্রতিটি থ্রেডের জন্য একটি স্ক্রিপ্ট।

(এখানে আমি সমস্যার মধ্যে পড়তে পারি) থ্রেডিং এবং একযোগে পাইথন বিশ্বে পৃথক পৃথক বিষয় এবং আপনি যদি জাভা ফ্রেমের মনের সাথে এটি নিয়ে আসেন তবে এটি একেবারে শক্ত করে নেওয়া উচিত My জাভাতে মঞ্জুর করা, বা এগুলি অ্যাপ্লিকেশন ধারক দ্বারা স্বচ্ছভাবে পরিচালনা করা হয়, পাইথনের পৃষ্ঠের অনেক কাছাকাছি।

আমার কাছে আশ্চর্যজনক বিষয় ছিল যে একটি থ্রেড আমার স্ক্রিপ্টের একটি ডাকে পরিচালনা করবে, তবে একই সাথে আমি কয়েক ডজন বাক্সে দৌড়ানোর পরে, আমি এটি সম্পর্কে আরও ভাল অনুভব করেছি।


4
থ্রেড সুরক্ষা এবং এই জাতীয় বিষয়ে আমি উদ্বিগ্ন নই। আমি বিশ্বাস করি এই ক্ষেত্রে ফ্লাস্ক ভাল কাজ করে। আমার প্রশ্ন অ্যাপ্লিকেশন ডিজাইন এবং আর্কিটেকচার সম্পর্কে। দর্শনগুলির আর্গুমেন্ট হিসাবে অনুরোধটি পাস করা কি ভাল অনুশীলন নয়? আমি মনে করি এটি আরও পাঠযোগ্য, সুস্পষ্ট এবং ডিবাগ করা সহজ।
ওয়ারওয়ারিচ

2

পাইথনে আপনার কাছে printকমান্ড রয়েছে (ভি 3 সাল থেকে ফাংশন) যা স্ট্যান্ডার্ড আউটপুট প্রিন্ট করে। আপনি STDOUT এ মুদ্রণ করতে চান তা স্পষ্ট করে উল্লেখ করবেন না - এটি আপনার জন্য পর্দার আড়ালে স্পষ্টভাবে করা হয়েছে।

পরোক্ষভাবে। পাইথনে। আর কারও সমস্যা নেই। কেন?

printপাইথন ভাষার অংশ, এবং পাইথনে প্রোগ্রামিংয়ের একটি প্রয়োজন হ'ল ... ভাল ... পাইথনকে জানা। এবং যদি আপনি পাইথন জানেন তবে আপনি জানেন যে printলক্ষ্যগুলি STDOUT। সেখানে কোনও আশ্চর্যের কিছু নেই।

পাইথন - একটি ভাষা হিসাবে - এটি নিজস্ব কনভেনশনটি সংজ্ঞায়িত করতে পারে এবং ধরে নিতে পারে যে প্রোগ্রামাররা সে সম্পর্কে সচেতন।

ফ্রেমওয়ার্কগুলিও এই সুযোগটি উপভোগ করে - এটি একটি ফ্রেমওয়ার্ক এবং একটি লাইব্রেরির মধ্যে অন্যতম মূল পার্থক্য। এটি ব্যবহারের জন্য আপনাকে কোনও গ্রন্থাগার শিখতে হবে না - আপনার কেবলমাত্র API এর যে অংশটি প্রয়োজন তা সন্ধান করতে হবে এবং ধরে নিন এটি ভাষা (বা কাঠামো) এর সম্মেলন অনুসরণ করে। এজন্য আপনি নিয়োগকারীরা জিএসওএন বা অ্যাপাচি কমন্সে জ্ঞানসম্পন্ন লোকদের সন্ধান করছেন না। তবে আপনি নিয়োগপ্রাপ্তরা জেকুয়ারি বা রুবির সাথে অভিজ্ঞতাযুক্ত ব্যক্তিদের খোঁজ করছেন বা জেলগুলি বা এএসপি.নেট এমভিসি-তে দেখেছেন - কারণ সেগুলি এমন ফ্রেমওয়ার্ক যা তাদের নিজস্ব কনভেনশনগুলি সংজ্ঞায়িত করে যা আপনাকে শেখার এবং সচেতন হওয়া দরকার।

ফ্লাস্ক, একটি কাঠামো হিসাবে, থ্রেড-স্থানীয় গ্লোবালটিতে প্রসঙ্গ সংরক্ষণের জন্য একটি কনভেনশনকে সংজ্ঞায়িত করতে পারে - এবং এটি কাউকে অবাক করে না, তাই এটি কোনও বিরোধী-নিদর্শন নয় not


2
নোট করুন যে "স্টডআউট" এর অর্থ ফাইল ডেস্ক্রিপ্টর দ্বারা চিহ্নিত করা যাই হোক না কেন sys.stdout। আপনি যদি এটি পরিবর্তন করেন তবে মুদ্রণ অন্য কোথাও চলে।
ফোশি

1
এছাড়াও, আপনি >>অপারেটর ব্যবহার করে বা পাইথন 3-এ কাজ করার জন্য fileআর্গুমেন্ট পাস করে আউটপুট স্ট্রিমটিকে ওভাররাইড করতে পারেন print। সুতরাং, sys.stdoutএটি একটি ডিফল্ট মান যা ওভাররাইড করা যায়।
ওয়ারওয়ারিচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.