Я могу запустить скрипт Python как услуга?

Если Вам нужны лучшие образцы на проекте. Можно посмотреть на тесты. У Вас будет большинство полных выборок для каждого полями. (Только если проект является протестированной единицей:))

здесь ищут избранные образцы: http://nhcontrib.svn.sourceforge.net/viewvc/nhcontrib/trunk/src/NHibernate.Linq/src/NHibernate.Linq.Tests/SelectionTests.cs?view=markup

И для всей тестовой папки: http://nhcontrib.svn.sourceforge.net/viewvc/nhcontrib/trunk/src/NHibernate.Linq/src/NHibernate.Linq.Tests/

Hope это помогает.

14
задан Community 23 May 2017 в 12:02
поделиться

6 ответов

Вы можете сделать его демоном. Для более полного решения существует PEP, но я обнаружил, что он работает хорошо.

import os, sys

def become_daemon(our_home_dir='.', out_log='/dev/null', err_log='/dev/null', pidfile='/var/tmp/daemon.pid'):
    """ Make the current process a daemon.  """

    try:
        # First fork
        try:
            if os.fork() > 0:
                sys.exit(0)
        except OSError, e:
            sys.stderr.write('fork #1 failed" (%d) %s\n' % (e.errno, e.strerror))
            sys.exit(1)

        os.setsid()
        os.chdir(our_home_dir)
        os.umask(0)

        # Second fork
        try:
            pid = os.fork()
            if pid > 0:
                # You must write the pid file here.  After the exit()
                # the pid variable is gone.
                fpid = open(pidfile, 'wb')
                fpid.write(str(pid))
                fpid.close()
                sys.exit(0)
        except OSError, e:
            sys.stderr.write('fork #2 failed" (%d) %s\n' % (e.errno, e.strerror))
            sys.exit(1)

        si = open('/dev/null', 'r')
        so = open(out_log, 'a+', 0)
        se = open(err_log, 'a+', 0)
        os.dup2(si.fileno(), sys.stdin.fileno())
        os.dup2(so.fileno(), sys.stdout.fileno())
        os.dup2(se.fileno(), sys.stderr.fileno())
    except Exception, e:
        sys.stderr.write(str(e))
8
ответ дан 1 December 2019 в 13:09
поделиться

Есть очень полезный пакет Pypi , который является основой для моих демонов, написанных на Python.

2
ответ дан 1 December 2019 в 13:09
поделиться

Вы можете попробовать Twisted ].

7
ответ дан 1 December 2019 в 13:09
поделиться

Предполагая, что это для Windows, см. этот рецепт на основе srvany

1
ответ дан 1 December 2019 в 13:09
поделиться

в XP и более поздних версиях вы можете использовать программу sc.exe для использования любого .exe в качестве службы:

>sc create
Creates a service entry in the registry and Service Database.
SYNTAX:
sc create [service name] [binPath= ] <option1> <option2>...
CREATE OPTIONS:
NOTE: The option name includes the equal sign.
 type= <own|share|interact|kernel|filesys|rec>
       (default = own)
 start= <boot|system|auto|demand|disabled>
       (default = demand)
 error= <normal|severe|critical|ignore>
       (default = normal)
 binPath= <BinaryPathName>
 group= <LoadOrderGroup>
 tag= <yes|no>
 depend= <Dependencies(separated by / (forward slash))>
 obj= <AccountName|ObjectName>
       (default = LocalSystem)
 DisplayName= <display name>
 password= <password>

Вы можете запустить свой pythonscript, запустив интерпретатор python с ваш сценарий в качестве аргумента:

python.exe myscript.py
2
ответ дан 1 December 2019 в 13:09
поделиться

Если вы говорите о Linux, это так же просто, как сделать что-то вроде ./myscript.py &

0
ответ дан 1 December 2019 в 13:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: