কীভাবে বাশ স্ক্রিপ্টের মাধ্যমে একটি সুদৃশ্য uwsgi পুনরায় লোড করবেন?


9

আমার কাছে একটি জাঙ্গো অ্যাপ্লিকেশন রয়েছে যা বাশ স্ক্রিপ্ট চালাচ্ছে। আমার nginx সার্ভারটি পুনঃসূচনা করার প্রয়োজন যাতে আমি চালিত /etc/init.d/nginx reloadযা দুর্দান্ত কাজ করে। আমি restart uwsgiউউসগি ব্যবহার করছিলাম তবে হার্ড সার্ভার পুনরায় চালু করার পরিবর্তে আমাকে গ্রেফুল পুনরায় লোড করা দরকার ।

কিভাবে আমি এটি করতে পারব?


আমি বর্তমানে একটি বাশ reload uwsgiফাংশন চালিয়ে যাচ্ছি subprocess.popen। এটি কেবলমাত্র প্রক্রিয়াটিকে পুনরায় লোড করছে বলে মনে হচ্ছে যে সমস্ত সাইটগুলিকে উউসগি উদাহরণ দ্বারা হোস্ট করা হচ্ছে না the importing uwsgiএবং চলমান uwsgi.reloadশুধুমাত্র কলিং প্রক্রিয়া প্রভাবিত বলে মনে হচ্ছে। পাইথন বা ব্যাশের মাধ্যমে উউসগির মধ্যে কোনও সুইচ রয়েছে যা সমস্ত উউসগি প্রক্রিয়া পুনরায় আরম্ভ করার অনুমতি দেয়

উত্তর:


0

আপনি পাইথন এ এটি করতে পারেন

import uwsgi
uwsgi.reload()

uwsgi.reload () মাঝে মাঝে কাজ করছে। মনে হচ্ছে আমার কিছু প্রক্রিয়া শেষ হওয়ার আগে সার্ভারটি পুনরায় চালু করা হবে। আমি এটি একটি জাঙ্গো অ্যাপ্লিকেশনটির মাধ্যমে চালাচ্ছি এবং এটি পুরো সার্ভারটি পুনরায় চালু করতে চাই।
প্রিয়তম

10

SIGHUP

আপনি আপনার uWSGI প্রসেসে SIGHUP সিগন্যাল প্রেরণ করে uWSGI পুনঃসূচনা করতে পারেন:

kill -HUP <process-id>

আপনি যদি এটি কোনও ব্যাশ স্ক্রিপ্টে স্বয়ংক্রিয় করতে চান, আপনি pidfileবিকল্প সরবরাহ করে প্রসেস আইডিটি uWSGI লিখে রাখতে পারেন , উদাহরণস্বরূপ:

--pidfile=/tmp/uwsgi.pid

তারপরে আপনি প্রক্রিয়াটি পুনরায় লোড করতে পারবেন:

uwsgi --reload /tmp/uwsgi.pid

স্পর্শ-রিলোড

আপনি touch-reloadযুক্তি দিয়ে uWSGI শুরু করতে পারেন , যা এমন কোনও ফাইল নির্দিষ্ট করে যা স্পর্শ করলে uWSGI পুনরায় লোড করে:

--touch-reload=/some/file

তারপরে আপনি ফাইলটি স্পর্শ করলে uWSGI পুনরায় লোড হবে:

touch /some/file

মনে রাখবেন যে মাস্টার প্রক্রিয়া মোডের সাথে চলতে থাকলে আপনি কেবলমাত্র ইউডাব্লুএসজিআইই পুনরায় লোড করতে পারেন, তবে এটি সাধারণত যদিও হয় case

আরও তথ্য: http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-theserserver

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