That error typically means your Python code raised an exception before the service could be started. You probably need some way to track that down - eg, some way to discover stdout/stderr from your service - win32traceutil etc might help depending on how the service is configured. Does the demo itself work? Does it work without the command-line mods?

Mark

On 2023-06-06 9:57 a.m., Gualtiero Scotti wrote:
Thank you Mark for your response, and your explanation.You are right, python.exe is not involved but I thought you handled the flag in your embedded calls..
When I try to start service it doesn't start and the error message  is:
*
Error starting service: The service did not respond to the start or control request in a timely fashion.*
*
*
_svc_name_ = 'XXXXXXXXXXXXXXX' _svc_display_name_ = 'XXXXXXXXXXXXXXXXXXX' _svc_description_ = 'SXXXXXXXXXXXXXXX' _exe_name_ = sys.executable _exe_args_ = '-X utf8 "' + os.path.abspath(__file__) + '"'
*
*
When I take a look to the service on Regedit I've the following situation:
ImagePath = *"C:\Program Files (x86)\snapp-device-manager-win32\Python\python.exe" -X utf8 "C:\Program Files (x86)\xxxxxxxxxxxxxx\winservice_launcher32.py"*
I can't find any logs about failure.... windows doesn't help me......
image.png

Thanks in advance for your availability.
Best regards

Il giorno mar 6 giu 2023 alle ore 15:05 Mark Hammond <mhamm...@skippinet.com.au> ha scritto:

    pythonservice.exe doesn't "wrap" python.exe - it's a stand-alone
    executable which embeds Python. Thus there's no way to pass a
    cmd-line param to python.exe as python.exe isn't involved. You
    could patch pythonservice.exe to handle that arg, then do whatever
    it is python.exe does with that arg.

    If you told me more about what went wrong with using python.exe as
    the executable for the service we might be able to work something
    out there, but "doesn't work" has never been a useful starting point.

    Cheers,

    Mark

    On 2023-06-06 2:56 a.m., Gualtiero Scotti wrote:
    HI Mark and Hi all,
    as I wrote previously Mark's solution did not work for me. I need
    pythonsevice.exe is able to pass -X utf8 parameter to python
    interpreter or in alternative is able to evaluate evaluate the
    environment variable PYTHONUTF8=1. Any suggestions?
    Please help me.
    Thanks in advance


    Il giorno lun 5 giu 2023 alle ore 10:51 Gualtiero Scotti
    <tie...@gmail.com> ha scritto:

        HI Mark,
        I've tried your solution but it doesn't work. When calling
        python directly, service fails to start.
        When i use
        #_exe_name_ = sys.executable #_exe_args_ = ' -X utf8 ' + '"'
        + os.path.abspath(sys.argv[0]) + '"'
        service are directly linked to my python app without using
        pythonservice.exe. ( I saw this on Regedit)

        _As you wrote on your example:_
        _
        _

        # This is an example of a service hosted by python.exe rather
        than
        # pythonservice.exe.

        # *Note that it is very rare that using python.exe is a
        better option*
        # than the default pythonservice.exe - the latter has better
        error handling
        # so that if Python itself can't be initialized or there are
        very early
        # i*mport errors, you will get error details written to the
        event log*.  When
        # using python.exe instead, you are forced to wait for the
        interpreter startup
        # and imports to succeed before you are able to effectively
        setup your own
        # error handling.

        *# So in short, please make sure you *really* want to do
        this, otherwise just
        # stick with the default.*
        *
        *
         I need to use pythonservice.exe but I don't understand how
        it wraps my python application. Is there a way to tell to
        pythonservice.exe to call python with some interpreter arguments?
        Thanks in advance.
        *
        *

        Il giorno gio 1 giu 2023 alle ore 17:05 Mark Hammond
        <skippy.hamm...@gmail.com> ha scritto:

            
https://github.com/mhammond/pywin32/blob/main/win32/Demos/service/nativePipeTestService.py
            is a demo of using a service using python.exe and
            supports specifying the command-line, so that might be an
            option?

            Mark

            On 2023-06-01 5:28 a.m., Gualtiero Scotti wrote:
            Hi, I need to start my python application through
            windows service. For this purpose I use pywin32.
            I'm not able to make a Python instance to evaluate the
            -X uf8 flag.

            This flag must be passed during python invocation only
            and not when it is already started.
            After some investigations I've found the service launch
            *pythonservice.exe* wrapper but I don't know how to pass
            the flag to the Python interpreter.

            Is there another option to set this flag? It is possible
            to set an env variable *PYTHONUTF8=1 * but
            pythonservice.exe doesn't seem to evaluate it...
            *
            *
            *My environment*
            *- Windows 11 Home 22H2*
            *- Python 3.11.1* (tags/v3.11.1:a7a450f, Dec  6 2022,
            19:43:28) [MSC v.1934 32 bit (Intel)] on win32
            - *Pywin32 305*
            - *Pywin32-ctypes 0.2.0*

            *Python documentation*


                4.7. UTF-8 mode¶
                <https://docs.python.org/3/using/windows.html#utf-8-mode>

            New in version 3.7.

            Windows still uses legacy encodings for the system
            encoding (the ANSI Code Page). Python uses it for the
            default encoding of text files (e.g.
            |locale.getencoding()|
            <https://docs.python.org/3/library/locale.html#locale.getencoding>).

            This may cause issues because UTF-8 is widely used on
            the internet and most Unix systems, including WSL
            (Windows Subsystem for Linux).

            You can use the Python UTF-8 Mode
            <https://docs.python.org/3/library/os.html#utf8-mode> to
            change the default text encoding to UTF-8. You can
            enable the Python UTF-8 Mode
            <https://docs.python.org/3/library/os.html#utf8-mode> via
            the |-X utf8| command line option, or the
            |PYTHONUTF8=1| environment variable. See |PYTHONUTF8|
            <https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUTF8> for
            enabling UTF-8 mode, and Excursus: Setting environment
            variables
            <https://docs.python.org/3/using/windows.html#setting-envvars> for
            how to modify environment variables.

            When the Python UTF-8 Mode
            <https://docs.python.org/3/library/os.html#utf8-mode> is
            enabled, you can still use the system encoding (the ANSI
            Code Page) via the “mbcs” codec.

            Note that adding |PYTHONUTF8=1| to the default
            environment variables will affect all Python 3.7+
            applications on your system. If you have any Python 3.7+
            applications which rely on the legacy system encoding,
            it is recommended to set the environment variable
            temporarily or use the |-X utf8| command line option.

            Note

            Even when UTF-8 mode is disabled, Python uses UTF-8 by
            default on Windows for:

             *

                Console I/O including standard I/O (see *PEP 528*
                <https://peps.python.org/pep-0528/> for details).

             *

                The filesystem encoding
                
<https://docs.python.org/3/glossary.html#term-filesystem-encoding-and-error-handler>
 (see
                *PEP 529* <https://peps.python.org/pep-0529/> for
                details).

            from -> https://docs.python.org/3/using/windows.html

            Please help me!
            Thanks in advance
            *
            *

            _______________________________________________
            python-win32 mailing list
            python-win32@python.org
            https://mail.python.org/mailman/listinfo/python-win32
_______________________________________________
python-win32 mailing list
python-win32@python.org
https://mail.python.org/mailman/listinfo/python-win32

Reply via email to