🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
19 messages
19 total messages Started by ak3031884 Mon, 20 Jul 2009 11:37
program jako usługa
#26409
Author: ak3031884
Date: Mon, 20 Jul 2009 11:37
6 lines
1361 bytes
Witam,
piszę taki program dręczący użytkowników przypominający  co 10 min o
porządkach w komputerze nie wiem jak zaimplementować żeby program
działała jako usługa w XP.
Czy może ktoś mi podpowie jak to zrobić.
Pozdrawiam.
Re: program jako usługa
#26411
Author: Bogusław Faja
Date: Mon, 20 Jul 2009 11:47
16 lines
1445 bytes
Dnia Mon, 20 Jul 2009 04:37:35 -0700 (PDT), ak3031884 napisał(a):

> Witam,
> piszę taki program dręczący użytkowników przypominający  co 10 min o
> porządkach w komputerze nie wiem jak zaimplementować żeby program
> działała jako usługa w XP.
> Czy może ktoś mi podpowie jak to zrobić.
> Pozdrawiam.

Witam,

Wielokrotnie też szukałem czegoś takiego, próbowałem tworzyć swoją
aplikację jako serwis - ogrom zabawy. Dopiero po jakimś czasie wpadłem na
"sc" (z linii poleceń). Gdybym znał to troszkę wcześniej...

pozdrawiam,
Re: program jako usługa
#26426
Author: Radomir Dopieralski
Date: Mon, 20 Jul 2009 12:17
15 lines
1691 bytes
At Mon, 20 Jul 2009 04:37:35 -0700 (PDT), ak3031884 wrote:

> Witam,
> piszę taki program dręczący użytkowników przypominający  co 10 min o
> porządkach w komputerze nie wiem jak zaimplementować żeby program
> działała jako usługa w XP.
> Czy może ktoś mi podpowie jak to zrobić.

Bylo cos takiego ostatnio prezentowane na lightning talkach na Europython
2009, niestety nie zapamietalem nazwy, bo to nie moja dzialka. Moze ktos
pamieta albo znajdzie w materialach video z konferencji...


-- 
Radomir Dopieralski, http://sheep.art.pl
Re: program jako usługa
#26412
Author: ak3031884
Date: Mon, 20 Jul 2009 12:40
24 lines
2240 bytes
On 20 Lip, 13:47, Bogusław Faja <zymen_out_@_out_zymen.net> wrote:
> Dnia Mon, 20 Jul 2009 04:37:35 -0700 (PDT), ak3031884 napisał(a):
>
> > Witam,
> > piszę taki program dręczący użytkowników przypominający  co 10 min o
> > porządkach w komputerze nie wiem jak zaimplementować żeby program
> > działała jako usługa w XP.
> > Czy może ktoś mi podpowie jak to zrobić.
> > Pozdrawiam.
>
> Witam,
>
> Wielokrotnie też szukałem czegoś takiego, próbowałem tworzyć swoją
> aplikację jako serwis - ogrom zabawy. Dopiero po jakimś czasie wpadłem na
> "sc" (z linii poleceń). Gdybym znał to troszkę wcześniej...
>
> pozdrawiam,

sc to windosowa aplikacja
chciałbym tego uniknąć i zrobić program który działa przy instalowaniu
jako usługa i nie trzeba by było konfigurować przy pomocy innych
programów

ufff będzie ciężko???
Re: program jako usługa
#26413
Author: Marcin Sztolcman
Date: Mon, 20 Jul 2009 12:45
16 lines
1367 bytes
On 09-07-20 14:40, ak3031884 wrote:

> chciałbym tego uniknąć i zrobić program który działa przy instalowaniu
> jako usługa i nie trzeba by było konfigurować przy pomocy innych
> programów
>
> ufff będzie ciężko???

No nie wiem...
if sys.platform == 'win32':
	os.system ('sc ... ')

?

-- 
Marcin Sztolcman :: http://urzenia.net/ :: http://sztolcman.eu/
Re: program jako usługa
#26415
Author: Jacek Czerwinski
Date: Mon, 20 Jul 2009 13:02
37 lines
2625 bytes
ak3031884 pisze:
> On 20 Lip, 13:47, Bogusław Faja <zymen_out_@_out_zymen.net> wrote:
>> Dnia Mon, 20 Jul 2009 04:37:35 -0700 (PDT), ak3031884 napisał(a):
>>
>>> Witam,
>>> piszę taki program dręczący użytkowników przypominający  co 10 min o
>>> porządkach w komputerze nie wiem jak zaimplementować żeby program
>>> działała jako usługa w XP.
>>> Czy może ktoś mi podpowie jak to zrobić.
>>> Pozdrawiam.
>> Witam,
>>
>> Wielokrotnie też szukałem czegoś takiego, próbowałem tworzyć swoją
>> aplikację jako serwis - ogrom zabawy. Dopiero po jakimś czasie wpadłem na
>> "sc" (z linii poleceń). Gdybym znał to troszkę wcześniej...
>>
>> pozdrawiam,
> 
> sc to windosowa aplikacja
> chciałbym tego uniknąć i zrobić program który działa przy instalowaniu
> jako usługa i nie trzeba by było konfigurować przy pomocy innych
> programów
> 
> ufff będzie ciężko???

Ciekawy temat ... jakby  gdzieś był python.exe (coś jak pythonw.exe) 
przekompilowany specyficznie dla startowania usług, jakby jeszcze 
wystawił w API to i owo z dziedziny zarządzania ... zwłaszcza że temat 
rozwojowy (mam na myśli, że pod Viśtę i nowe serwery spora część 
programów ma problem w łączeniu się z własną usługą, i tak trzeba to 
modyfikować więc dobre API nie jest złe).

Na API nasuwa mi się na minus brak konsoli (Lub opcjonalna konsola), 
brak streamów stdin,stderr,stdout(lub ich emulowanie)

W każdym razie w Javie (zaraz mnie zakrzyczą) jeśli o usługach mowa 
uznanie zdobyły rozwiązania z DLL i JNI, tysiące Tomcatów na tym stoją
Re: program jako usługa
#26414
Author: ak3031884
Date: Mon, 20 Jul 2009 13:02
20 lines
2024 bytes
On 20 Lip, 14:45, Marcin Sztolcman <msz...@poczta.onet.pl> wrote:
> On 09-07-20 14:40, ak3031884 wrote:
>
> > chciałbym tego uniknąć i zrobić program który działa przy instalowaniu
> > jako usługa i nie trzeba by było konfigurować przy pomocy innych
> > programów
>
> > ufff będzie ciężko???
>
> No nie wiem...
> if sys.platform == 'win32':
>         os.system ('sc ... ')
>
> ?
>
> --
> Marcin Sztolcman ::http://urzenia.net/::http://sztolcman.eu/

chm jak nie ma innego wyjścia to trzeba tak
dzięki za to
Re: program jako usługa
#26427
Author: Jacek Czerwinski
Date: Mon, 20 Jul 2009 13:06
12 lines
1309 bytes
ak3031884 pisze:
> Witam,
> piszę taki program dręczący użytkowników przypominający  co 10 min o
> porządkach w komputerze nie wiem jak zaimplementować żeby program
> działała jako usługa w XP.
> Czy może ktoś mi podpowie jak to zrobić.
> Pozdrawiam.
> 
Googlarka wykazuje że activestate coś ma
http://code.activestate.com/recipes/135700/
(Nie używałem, ale wydawało mi sie nieprawdopodobne by nikt nigdy tego 
nie robił)
Re: program jako usługa
#26428
Author: ak3031884
Date: Mon, 20 Jul 2009 13:16
14 lines
1871 bytes
On 20 Lip, 15:06, Jacek Czerwinski <x...@y.z.pl> wrote:
> ak3031884 pisze:> Witam,
> > piszę taki program dręczący użytkowników przypominający  co 10 min o
> > porządkach w komputerze nie wiem jak zaimplementować żeby program
> > działała jako usługa w XP.
> > Czy może ktoś mi podpowie jak to zrobić.
> > Pozdrawiam.
>
> Googlarka wykazuje że activestate coś mahttp://code.activestate.com/recipes/135700/
> (Nie używałem, ale wydawało mi sie nieprawdopodobne by nikt nigdy tego
> nie robił)

A to interesujące stestuje to koniecznie!!!.
i jeszcze się odezwe bo już widze żę trochę mam pomysłów.
Re: program jako usługa
#26425
Author: Bogusław Faja
Date: Mon, 20 Jul 2009 16:07
18 lines
1657 bytes
Dnia Mon, 20 Jul 2009 05:40:27 -0700 (PDT), ak3031884 napisał(a):

> sc to windosowa aplikacja
> chciałbym tego uniknąć i zrobić program który działa przy instalowaniu
> jako usługa i nie trzeba by było konfigurować przy pomocy innych
> programów
> 
> ufff będzie ciężko???

Ale przecież i tak musisz dodać ten proces. Czy to zrobisz programowo, czy
ręcznie, to już kwestia wyboru. Natomiast co za problem napisać cmd z
utworzeniem usługi dla Twojej aplikacji. Cmd odpalany po właściwym procesie
instalacji?

Niektóre instalatory chyba nawet posiadają możliwość wykonywania poleceń
konsoli w sposób niewidoczny dla użytkownika.

pozdrawiam,
Re: program jako usługa
#26416
Author: mak
Date: Sat, 01 Aug 2009 17:54
47 lines
3310 bytes
On 20 Lip, 15:02, Jacek Czerwinski <x...@y.z.pl> wrote:
> ak3031884 pisze:
>
>
>
> > On 20 Lip, 13:47, Bogusław Faja <zymen_out_@_out_zymen.net> wrote:
> >> Dnia Mon, 20 Jul 2009 04:37:35 -0700 (PDT), ak3031884 napisał(a):
>
> >>> Witam,
> >>> piszę taki program dręczący użytkowników przypominający  co 10 min o
> >>> porządkach w komputerze nie wiem jak zaimplementować żeby program
> >>> działała jako usługa w XP.
> >>> Czy może ktoś mi podpowie jak to zrobić.
> >>> Pozdrawiam.
> >> Witam,
>
> >> Wielokrotnie też szukałem czegoś takiego, próbowałem tworzyć swoją
> >> aplikację jako serwis - ogrom zabawy. Dopiero po jakimś czasie wpadłem na
> >> "sc" (z linii poleceń). Gdybym znał to troszkę wcześniej...
>
> >> pozdrawiam,
>
> > sc to windosowa aplikacja
> > chciałbym tego uniknąć i zrobić program który działa przy instalowaniu
> > jako usługa i nie trzeba by było konfigurować przy pomocy innych
> > programów
>
> > ufff będzie ciężko???
>
> Ciekawy temat ... jakby  gdzieś był python.exe (coś jak pythonw.exe)
> przekompilowany specyficznie dla startowania usług, jakby jeszcze
> wystawił w API to i owo z dziedziny zarządzania ... zwłaszcza że temat
> rozwojowy (mam na myśli, że pod Viśtę i nowe serwery spora część
> programów ma problem w łączeniu się z własną usługą, i tak trzeba to
> modyfikować więc dobre API nie jest złe).
>
> Na API nasuwa mi się na minus brak konsoli (Lub opcjonalna konsola),
> brak streamów stdin,stderr,stdout(lub ich emulowanie)
>
> W każdym razie w Javie (zaraz mnie zakrzyczą) jeśli o usługach mowa
> uznanie zdobyły rozwiązania z DLL i JNI, tysiące Tomcatów na tym stoją

pywin32 z activestate ma mozliwosc tworzenia uslug win32 -
dzialajacych dokladnie tak jak chcecie (bardzo dobrze dzialajacych od
ca. 8 lat)

mak
Re: program jako usługa
#26417
Author: ak3031884
Date: Thu, 06 Aug 2009 17:50
9 lines
1638 bytes
> pywin32 z activestate ma mozliwosc tworzenia uslug win32 -
> dzialajacych dokladnie tak jak chcecie (bardzo dobrze dzialajacych od
> ca. 8 lat)
>
> mak

Czy to jest to:
http://docs.activestate.com/activepython/2.5/pywin32/PyWin32.HTML  ?
Re: program jako usługa
#26418
Author: ryniek
Date: Thu, 06 Aug 2009 22:43
8 lines
1842 bytes
Znalazłem coś:
- http://agiletesting.blogspot.com/2005/09/running-python-script-as-windows.html
- http://mail.python.org/pipermail/python-win32/2006-November/005216.html

Windowsowa odmiana demonów to usługi (services). Wyżej masz dwa
przykłady. Jak widać można do tego użyć Batchy lub skorzystać z modułu
PyWin32 (http://sourceforge.net/projects/pywin32/); Chodzi tu przede
wszystkim o moduł win32serviceutil.py .
Re: program jako usługa
#26419
Author: ryniek
Date: Thu, 06 Aug 2009 22:44
8 lines
1955 bytes
Znalazłem coś:
- http://agiletesting.blogspot.com/2005/09/running-python-script-as-win...
- http://mail.python.org/pipermail/python-win32/2006-November/005216.html

Windowsowa odmiana demonów to usługi (services). Wyżej masz dwa
przykłady. Jak widać można do tego użyć Batchy lub skorzystać z modułu
PyWin32 ( http://sourceforge.net/projects/pywin32/ ); Chodzi tu przede
wszystkim o moduł win32serviceutil.py .
Re: program jako usługa
#26420
Author: ryniek
Date: Thu, 06 Aug 2009 22:47
65 lines
3866 bytes
On 7 Sie, 00:44, ryniek <rynie...@gmail.com> wrote:
> Znalazłem coś:
> -http://agiletesting.blogspot.com/2005/09/running-python-script-as-win...
> -http://mail.python.org/pipermail/python-win32/2006-November/005216.html
>
> Windowsowa odmiana demonów to usługi (services). Wyżej masz dwa
> przykłady. Jak widać można do tego użyć Batchy lub skorzystać z modułu
> PyWin32 (http://sourceforge.net/projects/pywin32/); Chodzi tu przede
> wszystkim o moduł win32serviceutil.py .

Ten pierwszy przykład chyba pochodzi jeszcze z cache Google (link
prowadzi do nieistniejącej strony), więc zamieszczę treść posta z
blogu tutaj:

"
 Running a Python script as a Windows service

This is a message I posted to comp.lang.py regarding ways to run a
regular Python script as a Windows service.

I will assume you want to turn a script called myscript.py into a
service.

1. Install Win2K Resource Kit (or copy the 2 binaries instsrv.exe and
srvany.exe).

2. Run instsrv to install srvany.exe as a service with the name
myscript:
C:\Program Files\Resource Kit\instsrv myscript "C:\Program Files
\Resource Kit\srvany.exe"

3. Go to Computer Management->Services and make sure myscript is
listed as a service. Also make sure the Startup Type is Automatic.

4. Create a myscript.bat file with the following contents in e.g. C:
\pyscripts:

C:\Python23\python C:\pyscripts\myscript.py

(replace Python23 with your Python version)

5. Create new registry entries for the new service.

    * run regedt32 and go to the HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet\Services\myscript entry
    * add new key (Edit->Add Key) called Parameters
    * add new entry for Parameters key (Edit->Add Value) to set the
Application name
          o Name should be Application
          o Type should be REG_SZ
          o Value should be path to myscript.bat, i.e. C:\pyscripts
\myscript.bat
    * add new entry for Parameters key (Edit->Add Value) to set the
working directory
          o Name should be AppDir
          o Type should be REG_SZ
          o Value should be path to pyscripts directory, i.e. C:
\pyscripts

6. Test starting and stopping the myscript service in Computer
Management->Services.

"

Proszę.
Re: program jako usługa
#26421
Author: ak3031884
Date: Fri, 07 Aug 2009 07:22
14 lines
2194 bytes
On 7 Sie, 00:44, ryniek <rynie...@gmail.com> wrote:
> Znalazłem coś:
> -http://agiletesting.blogspot.com/2005/09/running-python-script-as-win...
> -http://mail.python.org/pipermail/python-win32/2006-November/005216.html
>
> Windowsowa odmiana demonów to usługi (services). Wyżej masz dwa
> przykłady. Jak widać można do tego użyć Batchy lub skorzystać z modułu
> PyWin32 (http://sourceforge.net/projects/pywin32/); Chodzi tu przede
> wszystkim o moduł win32serviceutil.py .

witam
z win32serviceutil.py  to napisałem ale jakoś nie chce działać jest na
forum trochę wyżej w z tytulem "program jako usługa c.d.  "
ale jakoś nie chce to działać zdaje sie proste ale coś nie tak.
Re: program jako usługa
#26422
Author: Katharsis
Date: Fri, 07 Aug 2009 08:00
20 lines
2323 bytes
@ak3031884
Jeżeli masz dostęp do książki "Python Programming on Win32" (patrz:
Google Books), tam jest cały dział poświęcony tworzeniu własnych usług
w Pythonie.

Natomiast jeżeli interesuje Cię klasyczny sposób (np. skrypt wsadowy),
ja korzystam z klasycznego rozwiązania:


http://wklej.to/jX5V

Linię 10-tą stosujesz wtedy, gdy zależy Ci na integracji z pulpitem.
Jak widzisz do tego rozwiązania będziesz potrzebował 2 zew. aplikacji:
instsrv.exe i srvany.exe. Nie wiem czy jest to akurat zależne od formy
rozwiązania, ale mi zamknięcie systemu z działającą (własną usługą)
przedłuża się średnio o 5-8 sekund.

Jeżeli znajdziesz złoty środek, podziel się :).

Pozdrawiam.
Re: program jako usługa
#26423
Author: ak3031884
Date: Fri, 07 Aug 2009 09:06
26 lines
2964 bytes
On 7 Sie, 10:00, Katharsis <katharsis021...@gmail.com> wrote:
> @ak3031884
> Jeżeli masz dostęp do książki "Python Programming on Win32" (patrz:
> Google Books), tam jest cały dział poświęcony tworzeniu własnych usług
> w Pythonie.
>
> Natomiast jeżeli interesuje Cię klasyczny sposób (np. skrypt wsadowy),
> ja korzystam z klasycznego rozwiązania:
>
> http://wklej.to/jX5V
>
> Linię 10-tą stosujesz wtedy, gdy zależy Ci na integracji z pulpitem.
> Jak widzisz do tego rozwiązania będziesz potrzebował 2 zew. aplikacji:
> instsrv.exe i srvany.exe. Nie wiem czy jest to akurat zależne od formy
> rozwiązania, ale mi zamknięcie systemu z działającą (własną usługą)
> przedłuża się średnio o 5-8 sekund.
>
> Jeżeli znajdziesz złoty środek, podziel się :).
>
> Pozdrawiam.

Ogolnie dąże do tego żeby program odpalał sie z exe przy instalacji
dodawał usługę i odpalał ją od razu przy 100 komputerach w sieci to
trudno sie bawić
z kilkoma programami jak do czego dojde to dam znać
ten win32serviceutil jest dobry ale napisałem i jakoś nie działa
Re: program jako usługa
#26424
Author: mak
Date: Wed, 19 Aug 2009 13:15
154 lines
6807 bytes
On 7 Sie, 11:06, ak3031884 <ak3031...@gmail.com> wrote:
> On 7 Sie, 10:00, Katharsis <katharsis021...@gmail.com> wrote:
>
>
>
> > @ak3031884
> > Jeżeli masz dostęp do książki "Python Programming on Win32" (patrz:
> > Google Books), tam jest cały dział poświęcony tworzeniu własnych usług
> > w Pythonie.
>
> > Natomiast jeżeli interesuje Cię klasyczny sposób (np. skrypt wsadowy),
> > ja korzystam z klasycznego rozwiązania:
>
> >http://wklej.to/jX5V
>
> > Linię 10-tą stosujesz wtedy, gdy zależy Ci na integracji z pulpitem.
> > Jak widzisz do tego rozwiązania będziesz potrzebował 2 zew. aplikacji:
> > instsrv.exe i srvany.exe. Nie wiem czy jest to akurat zależne od formy
> > rozwiązania, ale mi zamknięcie systemu z działającą (własną usługą)
> > przedłuża się średnio o 5-8 sekund.
>
> > Jeżeli znajdziesz złoty środek, podziel się :).
>
> > Pozdrawiam.
>
> Ogolnie dąże do tego żeby program odpalał sie z exe przy instalacji
> dodawał usługę i odpalał ją od razu przy 100 komputerach w sieci to
> trudno sie bawić
> z kilkoma programami jak do czego dojde to dam znać
> ten win32serviceutil jest dobry ale napisałem i jakoś nie działa

win32service util rejestruje usluge w serwisach NT i wpisuje jaki
program powinien sie uruchomic (domyslnie pythonservice.exe z pywin32)
i w rejestrze zapamietuje jaki program pythona nalezy uruchomic oraz
od czego zalezy jego uruchomienie.

np:

import sys
import os
import win32service
import win32serviceutil
import NTService

def InstallService(pythonClassString, serviceName, displayName,
startType = None, errorControl = None, bRunInteractive = 0,
serviceDeps = None, userName = None, password = None, exeName = None,
perfMonIni = None, perfMonDll = None):
	# Handle the default arguments.
	if startType is None:
		startType = win32service.SERVICE_DEMAND_START
		if bRunInteractive:
			startType = startType | win32service.SERVICE_INTERACTIVE_PROCESS
	if errorControl is None:
		errorControl = win32service.SERVICE_ERROR_NORMAL

	hscm = win32service.OpenSCManager
(None,None,win32service.SC_MANAGER_ALL_ACCESS)
	try:
		hs = win32service.CreateService(hscm,
					serviceName,
					displayName,
					win32service.SERVICE_ALL_ACCESS,         # desired access
		            win32service.SERVICE_WIN32_OWN_PROCESS,  # service type
		            startType,
		            errorControl,       # error control type
		            exeName,
		            None,
		            0,
		            serviceDeps,
		            userName,
		            password)
		win32service.CloseServiceHandle(hs)
	finally:
		win32service.CloseServiceHandle(hscm)
	win32serviceutil.InstallPythonClassString(pythonClassString,
serviceName)
	# If I have performance monitor info to install, do that.
	if perfMonIni is not None:
		win32serviceutil.InstallPerfmonForService(serviceName, perfMonIni,
perfMonDll)

i juz masz zainstalowany serwis - teraz musisz to uruchomic:

def Installer(install, user=None, password=None):
	if not install:
		win32serviceutil.RemoveService(NTService.Service._svc_name_)
	else:
		cwd = os.getcwd()
		startup = win32service.SERVICE_AUTO_START
		startup = win32service.SERVICE_DEMAND_START
		if user is not None:
			user = '.\\%s' %user
		InstallService(
			'NTService.'+NTService.Service._svc_name_,
			NTService.Service._svc_name_,
			NTService.Service._svc_display_name_,
			serviceDeps = None,
			startType=startup,
			userName=user,
			password=password,
			exeName='"%s\\pythonservice.exe" "%s\\mojprogram.py"' %(cwd, cwd),
			perfMonIni=None,
			perfMonDll=None)

w exeName -podajesz wlasny program do uruchomienia wraz z parametrami
- ale on musi wiedziec jak komunikowac sie z SC

NTService.py zawiera:

class Service(win32serviceutil.ServiceFramework):
	_svc_name_ = "TriSoftService"
	_svc_display_name_ = "TriSoft Service"

	def __init__(self, args):

# tutaj starujemy nasze uslugi - asynchronicznie, czyli calosc siedzi
w jakims threadzie

		win32serviceutil.ServiceFramework.__init__(self, args)
		self.hWaitStop = CreateEvent(None, 0, 0, None)
		self.overlapped = pywintypes.OVERLAPPED()
		self.overlapped.hEvent = CreateEvent(None,0,0,None)

	def SvcStop(self):
		self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
		SetEvent(self.hWaitStop)

	def SvcDoRun(self):
		while 1:
			rc = WaitForMultipleObjects(
				(self.hWaitStop, self.overlapped.hEvent),
				0,
				1000)
			if rc==WAIT_OBJECT_0:
				# Stop event
				break

# tutaj czekamy na zatrzymanie sie naszej uslugi

		# Sleep to ensure that any new threads are in the list, and then
		# wait for all current threads to finish.
		# What is a better way?
		Sleep(500)

		# Write another event log record.
		servicemanager.LogMsg(
			servicemanager.EVENTLOG_INFORMATION_TYPE,
			servicemanager.PYS_SERVICE_STOPPED,
			(self._svc_name_, " bye")
			)

i juz :)
mak
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads