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

Bolehkah Program Python Dijalankan sebagai Perkhidmatan Windows?

Barbara Streisand
Barbara Streisandasal
2024-12-02 22:30:11150semak imbas

Can Python Programs Be Run as Windows Services?

Menjalankan Skrip Python sebagai Perkhidmatan Windows

Keperluan untuk mengurus objek yang saling berkaitan yang disimpan dalam pangkalan data memerlukan perkhidmatan yang menyediakan antara muka tahap yang lebih tinggi untuk operasi pada objek tersebut. Walau bagaimanapun, kebimbangan timbul mengenai menjalankan program Python sebagai perkhidmatan Windows untuk membolehkan pelaksanaan automatik tanpa log masuk pengguna.

Adakah Kemungkinan untuk Menjalankan Program Python sebagai Perkhidmatan Windows?

Ya, adalah mungkin untuk menjalankan program Python sebagai perkhidmatan Windows menggunakan perpustakaan pythoncom yang disertakan dalam ActivePython atau boleh dipasang dengan pywin32.

Sampel Pelaksanaan

Satu rangka asas perkhidmatan ringkas:

import win32serviceutil
import win32service
import win32event
import servicemanager

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)

    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)

Kesedaran dan Pengurusan Perkhidmatan Windows

Windows mengetahui perkhidmatan melalui win32serviceutil.ServiceFramework dan modul pengurus perkhidmatan.

Anda boleh menguruskan perkhidmatan menggunakan utiliti Windows asli seperti applet Perkhidmatan dalam Panel Kawalan atau melalui baris arahan dengan arahan seperti:

  • nama perkhidmatan permulaan bersih
  • nama perkhidmatan hentian bersih
  • sc queryex servicename

Analog kepada /etc/init.d

Tiada persamaan langsung dengan meletakkan skrip mula/henti dalam /etc/init.d dalam Windows. Perkhidmatan Windows biasanya dikonfigurasikan dalam Windows Registry. Walau bagaimanapun, anda boleh menggunakan pengurus kawalan perkhidmatan seperti SystemD atau Supervisor untuk mencapai kefungsian yang serupa.

Atas ialah kandungan terperinci Bolehkah Program 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