Stranica: 1/1.
[Python] Python Daemon
Postano: 17 sij 2013, 21:08
Postao/la Bug
Opet ja samo drugi jezik drugi problem

Posto mi ona C aplikacija(
http://www.linuxzasve.com/forum/viewtop ... =42&t=9803) pokrece Python aplikaciju na serveru, dolazim u problem da se load dize poprilicno (45-50) i to verovatno zato sto C program otvara/zatvara Py program.
I mislim da mi je jedino resenje da ubacim deamon, koji ce u pozadini raditi i sluziti C aplikaciji.
Py aplikacija proveri jel se IP nalazi u memcached "bazi" vrati 1 ili 0 i zatvori se program.
Ono sto sam an internetu procitao je da za daemon treba da applikacija ima neki while/loop, jel to tacno? Jel radio neko nesto slicno?
Bilo kakav savet bi mi dobro dosao

Re: Python Deamon
Postano: 18 sij 2013, 00:34
Postao/la ante003
za tak neke stvari mozes napraviti i ovo:
while true;
do skripta;
sleep 1 m;
done
beskocnacna petlja koja ti izvrsi skriptu, priceka 1 min i onda je opet izvrsi i tako u nedogled. nedostatak ovoga je to sto ne mozes kasnije ubiti tu while petlju osim ako ne ostavis taj terminal upaljen pa da mozes lupit Ctrl + C. A ako zelis ubit while petlju, moras restartat masinu

(ako postoji nacin da se to ubije nek slobodno netko veli

)
Drugo rjesenje ti je staviti tu naredbu u cron i tada ti je cron izvrsava kako si vec podesis.
Ovo sa cronom je IMO bolje rjesenje od while petlje jer mozes kontrolirat izvrsavanje.
Re: Python Deamon
Postano: 18 sij 2013, 00:38
Postao/la ante003
btw, sad gledam onaj program u C-u sa drugog topica. Zasto to sve ne napises u Pythonu? Onda samo jednom pozoves tu python skriptu i to je to. Cini se lakse od kombiniranja C-a i Pythona.
Re: Python Deamon
Postano: 18 sij 2013, 08:56
Postao/la stefan
ante003 je napisao/la:btw, sad gledam onaj program u C-u sa drugog topica. Zasto to sve ne napises u Pythonu? Onda samo jednom pozoves tu python skriptu i to je to. Cini se lakse od kombiniranja C-a i Pythona.
A što se tiče pozivanja pythona, možeš ga embedati u C++:
Kod: Označi sve
#include <Python.h>
int main(int argc, char *argv[])
{
Py_SetProgramName(argv[0]); /* optional but recommended */
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
Py_Finalize();
return 0;
}
Ili ovako pozvati izvršenje py fajla:
Kod: Označi sve
Py_Initialize();
FILE* PythonScriptFile = fopen("Python Scripts/Test.py", "r");
if(PythonScriptFile)
{
PyRun_SimpleFile(PythonScriptFile, "Python Scripts/Test.py");
fclose(PythonScriptFile);
}
Py_Finalize();
Sa Py_Initialize() samo jednom digneš python i onda ga prema potrebi pozivaš da nešto odradi.
Detalje pogledaj na
http://docs.python.org/2/extending/embedding.html
Re: Python Deamon
Postano: 18 sij 2013, 19:13
Postao/la Medojedni jazavac
ali stefane, to je C sintaksa

Re: Python Deamon
Postano: 18 sij 2013, 19:42
Postao/la stefan
Medojedni jazavac je napisao/la:ali stefane, to je C sintaksa

Što je "to"?
C++ uključuje C, pa ovo napisano vrijedi i za C i za C++