স্থানীয় ফ্লাস্ক সার্ভারে আস্তে অনুরোধগুলি


87

কেবলমাত্র একটি স্থানীয় সার্ভারে ফ্লাস্কের সাথে খেলা শুরু করা এবং আমি অনুরোধটি / প্রতিক্রিয়া বারের দিকে লক্ষ্য করছি যা তাদের হওয়া উচিত বলে আমি মনে করি না।

নীচের মত একটি সাধারণ সার্ভার সাড়া দিতে প্রায় 5 সেকেন্ড সময় নেয়।

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "index"

if __name__ == "__main__":
    app.run()

কোন ধারনা? বা এই ঠিক কিভাবে স্থানীয় সার্ভার?


এটি স্থানীয় সার্ভার নয় তবে পটভূমিতে চলমান অন্যান্য অ্যাপ্লিকেশনগুলির সাথে এটি কী হতে পারে আপনি কী ওএস এ চালাচ্ছেন?
গ্যাবিও

আমি ওএস এক্স 10.7 এ i7 আইম্যাক
চালাচ্ছি

4
আপনার প্রতিক্রিয়াগুলির জন্য এটি বেশি সময় নেওয়া উচিত নয় তবে আমি বোতলপিকে পরামর্শ দেব না এমন কোনও সাফল্যের আগে আমি আসলে ফ্লাস্ক দিয়ে ঘুরিয়ে ফেলেছি । তবুও আপনার ব্যাকগ্রাউন্ড প্রক্রিয়াগুলি পরীক্ষা করে দেখুন আপনার অজগরটি ধরে নিয়ে আপনার ধীর প্রতিক্রিয়া সৃষ্টি করার কারণে আপনার সার্ভারের একটি পুরানো সংস্করণ পটভূমিতে চলতে পারে running এছাড়াও এটি কি আপনার ব্রাউজারটি ক্রোম এবং সাফারিতে ঘটতে পারে?
গ্যাবিও

4
@ মেরুনের উত্তর আমার জন্য সঠিক ছিল। পরিবর্তে হোস্টের সেটিংস পরিবর্তন করার পরিবর্তে: আমি কি লোকালহোস্টের পরিবর্তে কেবল 127.0.0.1 ব্যবহার করার পরামর্শ দেব? এটি সিস্টেম কনফিগারেশন পরিবর্তন না করেই সমস্যার সমাধান করে।
ডেভিড বার্নাত

উত্তর:


94

ঠিক আছে আমি এটি খুঁজে বের করতে। এটি ওয়ার্কজেগ এবং ওস এর ipv6 সমর্থন করে এমন একটি সমস্যা হিসাবে উপস্থিত হয়।

ওয়ার্কজেগ সাইট http://werkzeug.pocoo.org/docs/serving/ থেকে :

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

সুতরাং ফিক্সটি হল আমার হোস্ট ফাইল থেকে নিম্নলিখিত লাইনটি মন্তব্য করে লোকালহোস্ট থেকে ipv6 অক্ষম করা:

::1             localhost 

একবার আমি এটি করলে বিলম্বের সমস্যাগুলি চলে যায়।

আমি সত্যিই ফ্লাস্ক খনন করছি এবং আমি আনন্দিত যে এটি কাঠামোর কোনও সমস্যা নয়। আমি জানতাম এটা হতে পারে না।


4
আমি এইগুলি দরকারী খুঁজে পেয়েছি: উইন্ডোজ techunboxed.com/2012/08/how-to-disable-ipv6-in-windows-8.html উবুন্টু noobslab.com/2012/05/disable-ipv6-if-your-internet-is। এইচটিএমএল
ল্যারি আইটেল

অনেক ধন্যবাদ! হঠাৎ দেব পরীক্ষাটি চটজলদি এবং প্রতিক্রিয়াশীল! আমার একমাত্র প্রশ্ন: ম্যাক হোস্ট ফাইলটি যেমন ইঙ্গিত দেয় যে লোকালহোস্ট অপসারণ করা আমার ম্যাকের ক্রিয়াকলাপগুলিকে প্রভাবিত করতে পারে, তাই আমি অবাক হয়েছি যে এটি এই লাইনটি উল্লেখ করছে (বা যে স্থানীয়ভাবে স্থানীয় হোস্টকে 127.0.0.1 এ রেখেছে
ডেভিড বি।

হোস্টগুলিতে আমার উইন্ডোজ 10 সিস্টেমে উভয় এন্ট্রি (আইপি 4 এবং আইপি 6) মন্তব্য করা হয়েছে; এগুলি ডিএনএস সিস্টেম দ্বারা সমাধান করা হয়। আমি যখন "লোকালহোস্ট" এর পরিবর্তে "127.0.0.1" এ সার্ভারটি চালিয়েছি তখন (আমি সাধারণ কলের জন্য 2.0 থেকে 0.003 সেকেন্ড)
লার্স

এই উত্তরের জন্য আপনাকে ধন্যবাদ! যদিও আমার পরিস্থিতি কিছুটা আলাদা ছিল (আইওএসএমটিপিডির বিরুদ্ধে নাক 2 চালানো), আপনার উত্তর আমাকে একটি ইঙ্গিত দিয়েছে: যখন আমি আমার উইন্ডোজ 10 ল্যাপটপে আইপিভি 6 অক্ষম করি তখন 10x বা 100x এর মতো জিনিসের গতি বাড়ায় !!
পেপোলুয়ান

91

এখানে প্রস্তাবিত হিসাবে app.run () এর আর্গুমেন্ট হিসাবে "থ্রেডড = ট্রু" যুক্ত করুন: http://arusahni.net/blog/2013/10/flask-multithreading.html

উদাহরণ স্বরূপ: app.run(host="0.0.0.0", port=8080, threaded=True)

আইপিভি 6-অক্ষম করার সমাধানটি আমার পক্ষে কাজ করে নি, তবে এটি করেছে।


4
পাসিং --threadedআমার কাছে manage.pyব্যবহার Flask-Scriptখুব কাজ করেন।
স্নোরফলোরপাগাস

7
যারা থ্রেড সক্ষম করে এটি "স্থির" হন, তাদের সতর্ক করুন! এক্ষেত্রে আগের অনুরোধটি সঠিকভাবে বন্ধ না হওয়ার কারণে বিলম্ব হয়েছিল, সুতরাং এখন এটি কেবলমাত্র প্রচুর থ্রেড
কেবিটিজ

4
আমার লোকালহোস্টকে দারুণভাবে দ্রুত রান করার জন্য আপনাকে ধন্যবাদ স্যার।
বেনজামিনজ

@ স্নলফ্লেক: অনুরোধগুলি সঠিকভাবে বন্ধ হচ্ছে না কিনা তা জানার কোনও উপায় আছে কি?
কাইলোটন

4
কমান্ড লাইনটি আমি ব্যবহার করেছি flask run --with-threadsযা আমার সমস্যার সমাধান করেছে।
arno_v

13

@ সাজিদ-সিদ্দিকী থেকে সমাধান টেকনিক্যালি সঠিক, কিন্তু মনে রাখবেন যে বিল্ট-ইন WSGI মধ্যে সার্ভার Werkzeug (যা প্যাকেজ হয় বোতল এবং কি জন্য ব্যবহার app.run()) শুধুমাত্র একক থ্রেডেড হয়।

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

আপডেট (2020-07-25): দেখে মনে হচ্ছে gevent সমর্থনকারী শুরু python3 5 বছর আগে, খুব শীঘ্রই পর আমি মন্তব্য করেন তা না তাই আপনি ব্যবহার করতে পারেন gevent এখন।

উত্সাহ

আপনি ইনস্টল করতে পারেন gevent মাধ্যমে পিপ আদেশের সঙ্গে pip install geventবা pip3 আদেশের সঙ্গে pip3 install gevent। সেই অনুযায়ী আপনার কোডটি কীভাবে সংশোধন করবেন সে সম্পর্কে নির্দেশাবলী এখানে রয়েছে: https://flask.palletsprojects.com/en/1.1.x/deploying/wsgi-standalone/#gevent

মেইনহেল্ড

gevent ভাল, কিন্তু সব benchmarks আমি দিকে তাকিয়ে করেছি যে বাস্তব বিশ্বের পরীক্ষামূলক জড়িত থেকে, meinheld সবচেয়ে সহজবোধ্য, সরল মনে করা হয় WSGI সার্ভার। (আপনি যদি আরও কিছু কনফিগারেশন আপত্তি না করেন তবে আপনি ইউডাব্লুএসজিআইতে একবার দেখে নিতে পারেন))

এছাড়াও আপনি ইনস্টল করতে পারেন meinheld মাধ্যমে pip3 আদেশের সঙ্গে pip3 install meinheld। সেখানে থেকে, সরবরাহ করা নমুনা এ বর্ণন meinheld উৎস সংহত করার বোতল : https://github.com/mopemope/meinheld/blob/master/example/flask_sample.py

* দ্রষ্টব্য: পাইচার্মের ব্যবহার থেকে লাইনটি from meinheld import serverএকটি ত্রুটি হিসাবে হাইলাইট করে তবে সার্ভারটি চলবে, তাই আপনি ত্রুটিটিকে উপেক্ষা করতে পারেন।


ফ্লাস্কের সাথে আমার বড় পারফরম্যান্স সমস্যা ছিল, এমনকি সাধারণ অনুরোধগুলি শেষ করতে প্রায় 0.5 দশক সময় নিচ্ছিল। খালি জেন্টে স্যুইচ করা হয়েছে এবং সবকিছু নির্বিঘ্নে কাজ করে, আপনাকে ধন্যবাদ!
gronostaj

7

কল http://localhost:port/endpointকল করার পরিবর্তে http://127.0.0.1:port/endpoint। এটি আমার জন্য প্রাথমিক 500 মিমি বিলম্বকে সরিয়ে দিয়েছে।


আমার জন্য এটি 3 সেকেন্ডের মতো কিছু সরিয়েছে (আমি ফর্মটি 0.0.0.0 থেকে 127.0.0.1 এ স্থানান্তরিত করেছি)। কেউ কীভাবে এবং কীভাবে এটি কাজ করে তা ব্যাখ্যা করতে পারে?
রটকিভ

দেবতাদের নামে এই কাজ কেন হয়? 2.06 সেকেন্ড থেকে 0.002 সেকেন্ডে গিয়েছিল। ব্রাউজারটি সমস্যা ছাড়াই লোকালহোস্ট ব্যবহার করতে সক্ষম, তবে অনুরোধ.কে লোকালহোস্টে সমাধান করতে 2 সেকেন্ড সময় লাগে।
Xevion

7

আমার সমস্যাটি "থ্রেডড = ট্রু" দ্বারা সমাধান করা হয়েছিল তবে আমি আমার সমস্যা অন্যদের থেকে আলাদা করার জন্য কিছু পটভূমি দিতে চাই যার জন্য এটি এটি না করে।

  1. অজগর 3 দিয়ে ফ্লাস্ক চালানোর সময় আমার সমস্যাটি কেবল তখনই উদ্ভূত হয়েছিল। পাইথন 2 এ স্যুইচ করা, আমার আর এই সমস্যাটি ছিল না।
  2. আমার সমস্যাটি কেবল ক্রোমের সাথে এপিআই অ্যাক্সেস করার সময় প্রকাশিত হয়েছিল, সেই সময়ে ক্রোম প্রত্যাশিত স্ক্রিনটি প্রদর্শন করেছিল, তবে আমি Chrome ক্র্যাব ট্যাবটি পুনরায় লোড না করে বা বন্ধ না করা পর্যন্ত সমস্ত কিছু ঝুলিয়ে (কার্ল, এফএফএক্স, ইত্যাদি) স্থির করে রেখেছিল, অন্য মুহূর্তে অপেক্ষা করা সমস্ত কিছু কাছাকাছি একটি ফলাফল ফিরে।

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

আমার ক্ষেত্রে থ্রেডিং এটি স্থির করেছে। অবশ্যই, আমি এখন অন্যরা যে লিঙ্কগুলি দিয়েছি তা নিশ্চিত করার জন্য যে এটি অন্য কোনও সমস্যার কারণ না ঘটছে তার মধ্যে দিয়ে যাচ্ছি।


4

threaded=Trueআমার জন্য কাজ করে, তবে শেষ পর্যন্ত আমি বুঝতে পারলাম যে সমস্যাটি ফায়ার ফক্সে ফক্সিপ্রক্সির কারণে। যেহেতু যখন ফ্ল্যাশ অ্যাপটি লোকালহোস্টে চলছে তখন ধীর সাড়া থাকলে তা হয়

  • ফক্সফ্রোক্সি ফায়ারফক্সে সক্ষম করা হয়েছে

ধীর সাড়া যদি না হয়

  • ফক্সফ্রোক্সি ফায়ার ফক্সে অক্ষম করা আছে

  • অন্যান্য ব্রাউজার ব্যবহার করে ওয়েবসাইটে অ্যাক্সেস করুন

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


2

আমি আমার সমস্যা সমাধানের জন্য মিহেকোর প্রতিক্রিয়া ব্যবহার করেছি।

::1 localhostআমার হোস্ট ফাইলটিতে ইতিমধ্যে মন্তব্য করা হয়েছিল, এবং সেটিংটি Threaded=trueআমার পক্ষে কার্যকর হয়নি। প্রতিটি REST অনুরোধটি তাত্ক্ষণিক না হয়ে প্রক্রিয়াটিতে 1 সেকেন্ড গ্রহণ করে।

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

জেনভেন্ট ব্যবহার করতে এটি দিয়ে ইনস্টল করুন pip install gevent

এর পরে, আমি জেন্টটি ব্যবহারের জন্য ফ্লাস্ক সেট করতে https://gist.github.com/viksit/b6733fe1afdf5bb84a40#file-async_flask-py-L41 ব্যবহার করেছি।

লিঙ্কটি নীচে নেমে গেলে স্ক্রিপ্টের গুরুত্বপূর্ণ অংশগুলি এখানে দিন:

from flask import Flask, Response
from gevent.pywsgi import WSGIServer
from gevent import monkey

# need to patch sockets to make requests async
# you may also need to call this before importing other packages that setup ssl
monkey.patch_all()

app = Flask(__name__) 


# define some REST endpoints... 

def main():

    # use gevent WSGI server instead of the Flask
    # instead of 5000, you can define whatever port you want.
    http = WSGIServer(('', 5000), app.wsgi_app) 

    # Serve your application
    http.serve_forever()


if __name__ == '__main__':
    main()

থ্রেডড = ট্রু (পাইথন ৩.on..7 এবং পোস্টম্যান ব্যবহার করে) এর জন্য কাজ করছে না, আমি ভার্সন কনফ্লিক্ট পাচ্ছি: (গ্রিনলেট ০.৪.১৩ (সি: \ অ্যানাকোন্ডা ৩ \ lib \ সাইট-প্যাকেজ)), প্রয়োজনীয়তা.পারস ('গ্রিনলেট> = 0.4)। 14; প্ল্যাটফর্ম_প্যাথন_প্রাপ্তি == "সিপিথন" ')), আমি কীভাবে এটি সমাধান করতে পারি জানতে পারি, ধন্যবাদ
hanzgs

0

হোস্টগুলিতে localhostপাশাপাশি চালানোর সময় আমি এই ত্রুটিটি পেয়েছি , তাই কারও কারও পক্ষে বিভিন্ন অন্তর্নিহিত সমস্যাগুলি একই লক্ষণগুলি প্রদর্শন করতে পারে।

টর্নেডোতে আমি যে জিনিসগুলি ব্যবহার করেছিলাম তার বেশিরভাগ জিনিসই আমি পরিবর্তন করেছি এবং কৌতূহলবশত এটি একটি পরিমাণে সহায়তা করেছে। আমার কয়েকটি ধীরে ধীরে পৃষ্ঠা লোড হয়েছে তবে জিনিসগুলি সাধারণত আরও প্রতিক্রিয়াযুক্ত বলে মনে হয়। এছাড়াও, খুব কৌতুকপূর্ণ, তবে আমার মনে হচ্ছে যে সময়ের সাথে সাথে একা ফ্লাসক কমবে, তবে ফ্লাস্ক + টর্নেডোও কম less আমি আপাচি ব্যবহার করার বিষয়টি কল্পনা করেছি এবং mod_wsgiজিনিসগুলি আরও উন্নত করে তুলব তবে টর্নেডো সেটআপ করা সত্যিই সহজ (দেখুন http://flask.pocoo.org/docs/deploying/others/ )।

(এছাড়াও, সম্পর্কিত প্রশ্ন: ফ্লাস্ক অ্যাপটি মাঝে মাঝে ঝুলন্ত থাকে )


0

আমার এখানে আলাদা সমাধান ছিল solution আমি সবে .pycসার্ভারের ডিরেক্টরি থেকে সমস্ত মুছে ফেলেছি এবং এটি আবার শুরু করেছি। উপায় দ্বারা, লোকালহোস্ট ইতিমধ্যে আমার হোস্ট ফাইলটিতে (উইন্ডোজ 8) মন্তব্য করেছিলেন।

সার্ভার পুরো সময় হিমশীতল ছিল এবং এখন এটি আবার ঠিকঠাক কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.