दिलचस्प पोस्ट
कैसे जावा में एक अवधि को प्रारूपित करें? (जैसे प्रारूप एच: एमएम: एसएस) IPhone ऐप को वेबपेज के लिए सुरक्षित https एन्क्रिप्शन MySQL बनाम MongoDB 1000 पढ़ता है जीसीसी -4 4.2 बाहर निकलने की स्थिति 1 के साथ विफल एचटीएमएल चपलता पैक पट्टी टैग श्वेतसूची में नहीं जनीट और जावा: गैर-सार्वजनिक विधियों का परीक्षण Levenshtein: MySQL + PHP यूयूआईडी को नंबर के रूप में कैसे स्टोर करना है? क्या जावा एसक्यूएल.टैमस्टैम्प समयक्षेत्र विशिष्ट है? क्या यह वास्तव में एक सामान्य अपवाद पकड़ने के लिए बुरा है? दो तिथियों के बीच कितने सेकेंड्स हैं? जांचें कि दो अनारॉर्डेड सूचियां समान हैं स्कला में करी बनाम आंशिक आवेदन की उपयोगिता (व्यावहारिक अनुप्रयोगों में) पायथन कक्षाओं में समानता ("समानता") का समर्थन करने के लिए शानदार तरीके सी में, मुझे एक टेक्स्ट फ़ाइल कैसे पढ़नी चाहिए और सभी स्ट्रिंग प्रिंट करना चाहिए

पायथन स्क्रिप्ट को सेवा के रूप में कैसे चलाना है?

मैं एक सीएनटीओएस सर्वर में एक अजगर स्क्रिप्ट चलाऊँगा:

#!/usr/bin/env python import socket try: import thread except ImportError: import _thread as thread #Py3K changed it. class Polserv(object): def __init__(self): self.numthreads = 0 self.tidcount = 0 self.port = 843 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.bind(('100.100.100.100', self.port)) self.sock.listen(5) def run(self): while True: thread.start_new_thread(self.handle, self.sock.accept()) def handle(self,conn,addr): self.numthreads += 1 self.tidcount += 1 tid=self.tidcount while True: data=conn.recv(2048) if not data: conn.close() self.numthreads-=1 break #if "<policy-file-request/>\0" in data: conn.sendall(b"<?xml version='1.0'?><cross-domain-policy><allow-access-from domain='*' to-ports='*'/></cross-domain-policy>") conn.close() self.numthreads-=1 break #conn.sendall(b"[#%d (%d running)] %s" % (tid,self.numthreads,data) ) Polserv().run() 

मैं $ python flashpolicyd.py का उपयोग कर और यह ठीक काम करता है … सवाल यह है: मैं $ python flashpolicyd.py कंसोल को बंद करने के बाद भी इस स्क्रिप्ट को कैसे $ python flashpolicyd.py ?

वेब के समाधान से एकत्रित समाधान "पायथन स्क्रिप्ट को सेवा के रूप में कैसे चलाना है?"

मैं इस कोड का उपयोग अपने अनुप्रयोगों को डेमॉइस करने के लिए करता हूं। यह आपको निम्न आदेशों का उपयोग करके स्क्रिप्ट start/stop/restart की अनुमति देता है

 python myscript.py start python myscript.py stop python myscript.py restart 

इसके अलावा मुझे मेरी सेवा को नियंत्रित करने के लिए एक init.d स्क्रिप्ट भी है। यह आपको स्वचालित रूप से सेवा शुरू करने की अनुमति देता है जब आपका ऑपरेटिंग सिस्टम बूट हो जाता है

यहां आपके जाने के लिए एक सरल उदाहरण है। बस एक कोड के अंदर अपना कोड स्थानांतरित करें, और इसे MyDeamon अंदर run फ़ंक्शन से कॉल करें

 import sys import time from daemon import Daemon class YourCode(object): def run(self): while True: time.sleep(1) class MyDaemon(Daemon): def run(self): # Or simply merge your code with MyDaemon. your_code = YourCode() your_code.run() if __name__ == "__main__": daemon = MyDaemon('/tmp/daemon-example.pid') if len(sys.argv) == 2: if 'start' == sys.argv[1]: daemon.start() elif 'stop' == sys.argv[1]: daemon.stop() elif 'restart' == sys.argv[1]: daemon.restart() else: print "Unknown command" sys.exit(2) sys.exit(0) else: print "usage: %s start|stop|restart" % sys.argv[0] sys.exit(2) 

कल का नवाब

यदि आप एक ऑपरेटिंग सिस्टम चला रहे हैं जो उपचर का उपयोग कर रहा है (जैसे CentOS 6) – आप सेवा का प्रबंधन करने के लिए उपचर का उपयोग भी कर सकते हैं। यदि आप अपस्टार्ट का उपयोग करते हैं तो आप अपनी स्क्रिप्ट को ऐसे ही रख सकते हैं, और बस इस तरह से /etc/init/my-service.conf कुछ जोड़ें

 start on started sshd stop on runlevel [!2345] exec /usr/bin/python /opt/my_service.py respawn 

फिर आप अपनी सेवा का प्रबंधन करने के लिए शुरू / बंद / पुनः आरंभ का उपयोग कर सकते हैं।

जैसे

 start my-service stop my-service restart my-service 

अपस्टार्ट के साथ काम करने का अधिक विस्तृत उदाहरण यहां उपलब्ध है ।

systemd

यदि आप एक ऑपरेटिंग सिस्टम चला रहे हैं जो Systemd का उपयोग करता है (जैसे CentOS 7) आप निम्नलिखित Stackoverflow उत्तर पर एक नज़र डाल सकते हैं।

मैं दो सुझाव देता हूं:

supervisord

1) supervisor पैकेज स्थापित करें (यहां और अधिक कार्य-निर्देश दिए गए हैं ):

 sudo apt-get install supervisor 

2) /etc/supervisor/conf.d/flashpolicyd.conf पर अपने डेमन के लिए एक कॉन्फिग फाइल बनाएँ:

 [program:flashpolicyd] directory=/path/to/project/root environment=ENV_VARIABLE=example,OTHER_ENV_VARIABLE=example2 command=python flashpolicyd.py autostart=true autorestart=true 

3) supervisor को अपने नए .conf को लोड करने के लिए पुनरारंभ करें

 supervisorctl update supervisorctl restart flashpolicyd 

systemd (यदि वर्तमान में आपके Linux distro द्वारा उपयोग किया जाता है)

 [Unit] Description=My Python daemon [Service] Type=simple ExecStart=/usr/bin/python3 /opt/project/main.py WorkingDirectory=/opt/project/ Environment=API_KEY=123456789 Environment=API_PASS=password Restart=always RestartSec=2 [Install] WantedBy=sysinit.target 

इस फाइल को /etc/systemd/system/my_daemon.service में रखें और इसे systemctl daemon-reload && systemctl enable my_daemon && systemctl start my_daemon --no-block का उपयोग करके systemctl daemon-reload && systemctl enable my_daemon && systemctl start my_daemon --no-block

लॉग देखने के लिए:

systemctl status my_daemon

मेरा गैर अजगर दृष्टिकोण का उपयोग किया जाएगा और प्रत्यय अर्थात्:

 python flashpolicyd.py & 

स्क्रिप्ट को रोकने के लिए

 killall flashpolicyd.py 

भी पाइपिंग और अस्वीकृति के साथ प्रत्यय superparent (ऊपरी) के तहत प्रक्रिया डाल देंगे:

 python flashpolicyd.pi & disown 

Getpid फ़ंक्शन से उपयोग की तुलना में अपने ऐप से पहली बार आयात ओएस मॉड्यूल पीड के ऐप को प्राप्त कर लेता है और फ़ाइल में सहेजता है। उदाहरण के लिए:

 import os pid = os.getpid() op = open("/var/us.pid","w") op.write("%s" % pid) op.close() 

और /etc/init.d पथ में एक बैश फ़ाइल बनाएँ: /etc/init.d/servername

 PATHAPP="/etc/bin/userscript.py &" PIDAPP="/var/us.pid" case $1 in start) echo "starting" $(python $PATHAPP) ;; stop) echo "stoping" PID=$(cat $PIDAPP) kill $PID ;; esac 

अब, आप यूआर एप को कमांड से शुरू और रोक सकते हैं:

सेवा सेवा नाम सेवा सेवा शुरू

या

/etc/init.d/sernvername stop /etc/init.d/servername प्रारंभ करें

अजगर की मेरी स्क्रिप्ट के लिए, मैं का उपयोग करता हूँ …

अजगर स्क्रिप्ट को प्रारंभ करने के लिए:

 start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --exec $DAEMON 

अजगर स्क्रिप्ट को रोकने के लिए:

 PID=$(cat $PIDFILE) kill -9 $PID rm -f $PIDFILE 

पी एस: गरीब अंग्रेजी के लिए खेद है, मैं CHILE से हूँ: डी