windows - Python script stopper med at arbejde med BEX fejl

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et Python-script, der kører på Windows, hvilket er grundlæggende RESTful interface-klient med flere forbindelser til SQL-database. Det skal genstartes med en vis tid (for eksempel 15 minutter). Til dette formål pakkede jeg koden inde i sløjfen med funktion os.execl(). Jeg kører script fra PowerShell ved hjælp af følgende format:


PS C:	est> python.exe .script.pyc


Scriptet selv (uden at afsløre implementeringsdetaljer):


import base64
import datetime
import glob
import logging
import os
import socket
import sys
import threading
import time
import pyodbc
import binascii
import configparser
import codecs
import requests
from collections import namedtuple
from binascii import unhexlify, b2a\_base64

FORMAT = '\%(asctime)-15s \%(levelname)-10s \%(message)s'
logging.basicConfig(format=FORMAT, level=logging.INFO)
log = logging.getLogger()

# some class declarations here

if \_\_name\_\_ == '\_\_main\_\_':

    # Initializing counter for time
    timeLast = time.time()

    while 1:
        timeCurrent = time.time()
        if ((timeCurrent - timeLast) > resetTime):
            timeLast = timeCurrent
            os.execl(sys.executable, sys.executable, * sys.argv)

        try:        
            # Fetching data from DB
            # Processing data

        except Exception as e:
            log.error(repr(e))
            time.sleep(1)

# Wait for user input before exiting
sys.stdin.read()


Efter få dage med at køre, stopper scriptet imidlertid med at arbejde med følgende undtagelse af bufferoverløb (BEX):



  Fejlfindende ansøgning python.exe, version 3.6.3150.1013, tidsstempel
  0x59d3c90d, fejlmodul ucrtbase.dll, version 10.0.10586.1171,
  tidsstempel 0x59ae5046, undtagelseskode 0xc0000417, fejlforskydning
  0x000834c4, proces id 0xecc, program starttidspunkt
  0x01d351c6613b826e.



Jeg bemærkede også, at PowerShell-konsolvinduet ikke forfriskende vinduesindhold, medmindre jeg lægger vinduet i fokus og trykker på pil ned. Måske noget andet problem.


Miljø:



  • Windows Server Standard SP2 (32-bit)

  • PowerShell 2.0

  • Python 3.6.3


Bedste reference


Synes problemet er relateret til, at scriptet kører inde i PowerShell. Det observeres ikke, mens scriptet køres inde i Python Shell.