Запуск Python Script (с Twisted Reactor) через NSSM дает неожиданные результаты - PullRequest
0 голосов
/ 13 марта 2020

Мое мультимодульное python приложение работает отлично - когда я запускаю его из файла .bat или из кода CMD / Visual Studio.

Здесь main.py:

# Libraries
import roses
import tulips
import log
import data
import datetime
import traceback
from twisted.internet import task, reactor

# Functions to be executed on start up
def startUp():
    roses.startUp()
    tulips.startUp()

# Functions to be executed every 1 seconds
def seconds_1():
    roses.live()
    tulips.live()
    heartBeat()
    data.fireHose()

# Functions to be executed every 1 minute
def minutes_1():
    roses.calcs()
    tulips.calcs()

# Heartbeat function
def heartBeat():
    try:
        sqlQuery = """
        UPDATE site
        SET heartbeat = %s
        WHERE  id = %s
        """
        sqlValues = datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S'), "Flowers101"
        data.myDBOps(sqlQuery, sqlValues, "UPDATE")
    except:
        log.errorLogs.error(traceback.format_exc())
        log.infoLogs.error("main.heartBeat failed, retrying..")
        heartBeat()


# Main Program Begin
log.infoLogs.info("Program configuration started...")

# ---> Start Up Functions
startUp()

# ---> Harvest new data every 0.5 seconds
everyHalfSecond = task.LoopingCall(data.harvest)
everyHalfSecond.start(0.5)

# ---> Functions that need to run every 1 seconds
every1Second = task.LoopingCall(seconds_1)
every1Second.start(1)

# ---> Functions that need to run once a minute
everyMinute = task.LoopingCall(minutes_1)
everyMinute.start(60)

log.infoLogs.info("Program first loop completed.")
reactor.run()
# Main Program End
# Main Program End

Странные вещи, которые я наблюдал при использовании NSSM:

  • Я получаю новые данные из heartBeat() в моей базе данных SQL, как и ожидалось.
  • Я не являюсь получение обновлений данных, которые roses.live(), tulips.live(), roses.calcs() и tulips.calcs() должны предоставлять базе данных.
  • Мои log операции не работают.

Что я пробовал:

  • Запуск службы вручную, щелкнув правой кнопкой мыши на services.msc (те же проблемы, что и выше)
  • Вместо ссылки main.py в NSSM, я поставил промежуточный .bat файл. Те же проблемы, что и выше.

Надеюсь, у вас есть идея отладки, которой вы хотите поделиться. Я подозреваю, что это как-то связано с twisted расписанием ...

...