Rumah >pembangunan bahagian belakang >Tutorial Python >Bolehkah Skrip Python Dijalankan sebagai Perkhidmatan Windows?

Bolehkah Skrip Python Dijalankan sebagai Perkhidmatan Windows?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-04 09:44:14294semak imbas

Can Python Scripts Be Run as Windows Services?

Menjalankan Skrip Python sebagai Perkhidmatan Windows

Dalam konteks membangunkan sistem berasaskan perkhidmatan dalam Python, persoalan timbul sama ada ia mungkin untuk menjalankan skrip Python sebagai perkhidmatan Windows. Artikel ini menangani pertanyaan ini dan memberikan jawapan yang komprehensif.

Sememangnya, program Python boleh dihoskan sebagai perkhidmatan Windows, memanfaatkan perpustakaan pythoncom yang disertakan dalam ActivePython atau melalui sambungan pywin32. Untuk menggambarkan proses ini, pertimbangkan rangka kod berikut untuk perkhidmatan asas:

import win32serviceutil
import win32service
import win32event
import servicemanager
import socket

class AppServerSvc (win32serviceutil.ServiceFramework):
    _svc_name_ = "TestService"
    _svc_display_name_ = "Test Service"

    def __init__(self,args):
        win32serviceutil.ServiceFramework.__init__(self,args)
        self.hWaitStop = win32event.CreateEvent(None,0,0,None)
        socket.setdefaulttimeout(60)

    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.hWaitStop)

    def SvcDoRun(self):
        servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
                              servicemanager.PYS_SERVICE_STARTED,
                              (self._svc_name_,''))
        self.main()

    def main(self):
        pass

if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(AppServerSvc)

Masukkan kod tersuai anda ke dalam fungsi main(), biasanya menggunakan gelung tak terhingga yang boleh diganggu dengan memantau bendera yang ditetapkan dalam kaedah SvcStop.

Selain itu, Windows dimaklumkan tentang kewujudan perkhidmatan anda melalui Pengurus Perkhidmatan. Anda boleh memantau dan mengurusnya menggunakan utiliti Windows asli seperti Services Console (services.msc) atau alat baris arahan sc. Sama seperti direktori /etc/init.d Unix untuk skrip mula/henti, Windows menggunakan scm (Pengurus Kawalan Perkhidmatan) untuk menguruskan perkhidmatan. Dengan menggunakan utiliti sc, anda boleh melakukan pelbagai tindakan pada perkhidmatan, termasuk mencipta, memulakan, menghentikan dan mengkonfigurasinya.

Atas ialah kandungan terperinci Bolehkah Skrip Python Dijalankan sebagai Perkhidmatan Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn