উত্তর:
flask.Flask.run
অতিরিক্ত কীওয়ার্ড আর্গুমেন্টগুলি গ্রহণ করে ( **options
) যেটিতে এটি ফরোয়ার্ড করা হয় werkzeug.serving.run_simple
- এর মধ্যে দুটি আর্গুমেন্ট হ'ল threaded
(একটি বুলিয়ান) এবং processes
(যা আপনি উইকিজেগ অনুরোধগুলি পরিচালনা করতে একাধিক প্রক্রিয়া চালিয়ে নিতে একের বেশি সংখ্যককে সেট করতে পারেন)।
threaded
True
ফ্লাস্ক ১.০ হিসাবে ডিফল্ট , সুতরাং ফ্লাস্কের সর্বশেষ সংস্করণগুলির জন্য, ডিফল্ট বিকাশ সার্ভার ডিফল্টরূপে একাধিক ক্লায়েন্ট পরিবেশন করতে সক্ষম হবে। ফ্লাস্কের পুরানো সংস্করণগুলির জন্য, আপনি threaded=True
এই আচরণটি সক্ষম করতে স্পষ্টভাবে পাস করতে পারেন ।
উদাহরণস্বরূপ, আপনি করতে পারেন
if __name__ == '__main__':
app.run(threaded=True)
পুরানো ফ্লাস্ক সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ উপায়ে থ্রেডগুলি ব্যবহার করে একাধিক ক্লায়েন্টকে পরিচালনা করতে or
if __name__ == '__main__':
app.run(threaded=False, processes=3)
আসন্ন অনুরোধগুলি হ্যান্ডেল করার জন্য তিনটি প্রক্রিয়া স্পার করতে ওয়ার্কজেগকে বলতে, বা ঠিক
if __name__ == '__main__':
app.run()
থ্রেড ব্যবহার করে একাধিক ক্লায়েন্ট পরিচালনা করতে আপনি যদি জানেন যে আপনি ফ্লাস্ক ০.০ বা তার পরে ব্যবহার করছেন।
বলা হচ্ছে, ওয়ার্কজেগের serving.run_simple
স্ট্যান্ডার্ড লাইব্রেরির wsgiref
প্যাকেজ মোড়ানো - এবং এই প্যাকেজে ডাব্লুএসজিআইয়ের একটি রেফারেন্স বাস্তবায়ন রয়েছে, কোনও উত্পাদন-প্রস্তুত ওয়েব সার্ভার নয়। আপনি যদি উত্পাদনে ফ্লাস্ক ব্যবহার করতে চলেছেন (ধরে নিলেন যে "উত্পাদন" কম ট্রাফিকের অভ্যন্তরীণ অ্যাপ্লিকেশন নয় যা 10 টিরও বেশি সহকারী ব্যবহারকারী নেই) এটি সত্যিকারের ওয়েব সার্ভারের পিছনে দাঁড় করানোর বিষয়টি নিশ্চিত করুন (ফ্ল্যাশকের ডকস বিভাগের শিরোনামটি দেখুন) কিছু প্রস্তাবিত পদ্ধতির জন্য স্থাপনার বিকল্পসমূহ )।
app.run()
ফ্লাস্কের মধ্যে থেকে সহজটি ব্যবহার করে একক থ্রেডে একক সিঙ্ক্রোনাস সার্ভার তৈরি করা হয় যা একবারে কেবলমাত্র একটি ক্লায়েন্টকে পরিবেশন করতে সক্ষম। এটি ঠিক এই কারণেই স্বল্প চাহিদাযুক্ত (অর্থাৎ উন্নয়ন, ডিবাগিং) নিয়ন্ত্রিত পরিবেশে ব্যবহারের উদ্দেশ্যে।
থ্রেড তৈরি করা এবং সেগুলি নিজে পরিচালনা করা সম্ভবত পাইথন জিআইএল-এর কারণে আপনাকে খুব বেশি দূরে নিয়ে যেতে পারে না ।
এটি বলেছিল, আপনার কাছে এখনও কিছু ভাল বিকল্প রয়েছে। গুনিকর্ন হ'ল একটি শক্তিশালী, সহজেই ব্যবহারযোগ্য ডাব্লুএসজিআই সার্ভার যা আপনাকে একাধিক কর্মী (পৃথক প্রক্রিয়া, তাই কোনও জিআইএল উদ্বেগ না জাগাতে) দেবে, এবং এমনকী অ্যাসিক্রোনাস কর্মীদের সাথে আসে যা আপনার অ্যাপ্লিকেশনটি দ্রুততর করবে (এবং এটি আরও সুরক্ষিত করবে) সামান্য সহ আপনার পক্ষ থেকে কোনও কাজ করা হয়নি (বিশেষত ফ্লাস্ক সহ)।
তবুও, এমনকি গ্যানিকর্নকে সম্ভবত সরাসরি প্রকাশ্যে প্রকাশ করা উচিত নয়। উত্পাদনে, এটি আরও শক্তিশালী এইচটিটিপি সার্ভারের পিছনে ব্যবহার করা উচিত; nginx Gunicorn এবং বোতল সঙ্গে ভাল যেতে থাকে।
gunicorn app:app 127.0.0.1:8080
পরিবর্তে চালিত করতে দেবে python app.py
। Nginx জনসেবার যে আপনার ব্যক্তিগত Gunicorn রানের অ্যাপ্লিকেশন প্রকাশ হিসেবে কাজ করবে (রিভার্স প্রক্সি) , নিম্ন স্তরের HTTP- র বাস্তবায়ন বিবরণ সমস্ত প্রকারের গোপন, সম্ভবত স্ট্যাটিক ফাইল সরাসরি, ইত্যাদি ভজনা
processes=100
এবং এতে খুশি হতে পারি? আমার ক্ষেত্রে, আমার কেবল স্থিতিশীল ফাইল দরকার, কোনও HTTP পোস্ট পদ্ধতি নেই। আমার প্রয়োজনীয়তা হ'ল, আমি আমার প্যারেন্ট অ্যাপের অংশ হিসাবে সমস্ত ফ্লাস্ক থ্রেড চালাতে চাই, যাতে তারা সকলেই ভেরিয়েবলগুলি ভাগ করতে পারে।