Különben annak apropóján jött az igény, hogy az email kiszolgálómon megvalósítsam az Undo funkciót. Ehhez annyi kellett, hogy az exim freezelje a kiküldött leveleket, de ütemezzen az adott queue_id-ra egy thaw-ot is. Amíg a levelem freeze-ben van, tudom onnan törölni megvalósítva ezzel az Undo műveletet. Az Undo grace period-ot általában 10-60 mp közé érdemes állítani (nálam per-user beállítás és default 50). Ez egy olyan intervallum, aminek az eleje és vége is eshet ugyanazon percbe, így a perc-alapú cron kiesik, mert pl. freeze-elés és a thaw ütemezése történik x perc 10 mp-kor, akkor magát a cron job-ot x perc 0 mp-re kellene ütemezni plusz 50 mp sleep-pel. Ilyenkor sose fut le a job. Következő percre ütemezni? Akkor megbízhatatlan, kiismerhetetlen lenne a rendszer: hol annyit vár amennyit kell, hol kevesebbet? meg különben is, menjen tovább az az email, hacsak lehet.
a patch itt van:
http://pastebin.com/xh2HnZ0T
http://pastebin.com/09hjm2sX
- bAndie9100 blogja
- A hozzászóláshoz be kell jelentkezni
- 1448 megtekintés
Hozzászólások
man at:
At and batch as presently implemented are not suitable when users are competing for resources. If this is the case for your
site, you might want to consider another batch system, such as nqs.
Kivancsi lennek kihajtott rendszeren mennyit "kesik".
- A hozzászóláshoz be kell jelentkezni
ja persze, késés az mindig lehet. nekem alapvető felfogásom, hogy a computer architektúrák ahogy most léteznek, nem az általánosan értelmezett idő keretein belül működnek. ezt most nagyon félreérthető így olvasni, de nehéz megfogalmaznom. tehát még hogy ha az adott rendszernek van is egy belső órája (vegyük ezt a pontos időnek), ami alapján tud processzeket indítani, a processzor feladatai event-alapúak, bármikor várhat bármennyit időt disk IO, terminal IO műveletekre. úgyhogy bármilyen óra-perc-féle "világidőről" legyen szó, az csak alsó határidőt jelenthet valójában. ezt szokták úgy is megfogalmazni, hogy "ha nagy a load, késhet ez meg az". ha olyan pontosak akarunk lenni, hogy pl. egy "02 08 * * * date" cron job 08:02 percet írjon ki a kimenetére, az még alacsony load mellett se garantált.
szerintem bármennyit késhet. egy oprendszer összetettségű rendszeren meghatározatlan. és az at kódjában nem is láttam olyan "késésmérőt", mint a vix cron-ban (ott asszem ha a meghatározott futtatási idő után 3 perc múlva jutna el egy job futtatásáig, akkor nem futtatja).
kösz a tippet, ezt az nqs-t megnézem.
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
Olvass utána a valósidejű rendszereknek, ott felső határa is van a processzeknek.
Illetve a probléma abból ered, hogy egy olyan feature-t akarsz, amit alapesetben az e-mail szoftverrendszered nem tud, ezért megpróbálod emulálni más szoftverrel - több-kevesebb sikerrel.
- A hozzászóláshoz be kell jelentkezni
.
- A hozzászóláshoz be kell jelentkezni
systemd.timer(5), kombinalva incronnal csodalatos dolgokra kepes, de tobb esetben incron sem kell.
Persze ezzel megnyered a teljes systemd stuffot, ami egyeseknel kiveri a biztositekot.
--
|8]
- A hozzászóláshoz be kell jelentkezni
(És a systemd kötődéssel együtt a garantált Linuxhoz kötődést, míg az at és exim azért legfeljebb csak 85-90%-ban jelenti azt ;-) )
- A hozzászóláshoz be kell jelentkezni
Me', letezik mas is? o.O </troll>
--
|8]
- A hozzászóláshoz be kell jelentkezni
Az exim -nek meg tudod adni, hogy queue_only, az nem elég? Elvileg azert az SMTP nem az a protokoll, aminek ASAP SOS FONTOS kell mukodnie, csak a tuggyukhol :)
- A hozzászóláshoz be kell jelentkezni
queue_only-val nem tudom megmondani, mikor kerüljön ki a queue-ból. adott esetben a queue runner hamarabb is ráfuthat, mint ahogy az undo grace time lejár. és routing fázisban is előfordulhat hogy nem akarom egyből továbbküldeni (control = queue_only csak ACL fázisban van).
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
Komolyan erdekelne, mi lesz ennek a valodi ertelme. :) Illetve ertem, de nem artana inkabb valos ideju rendszerekben / sajat SMTP daemonban gondolkodni. Az utobbi kuonosen jo otlet, ha visszaemlekszel, nekem is kellett....
- A hozzászóláshoz be kell jelentkezni
alapvetően az exim adottságai elegendőek az általam vizionált email kiszolgálóhoz. apróbb igények vannak, amiket viszont jól hozzá lehet eszkábálni segédszkriptekkel. ez az undo funkció épp egy kiugró dolog volt, amiatt mert nincs az exim-ben olyan állapota az email-nek, hogy "álljál meg de pontosan megmondom, hogy meddig". multiqueue kezeléssel vagy per-message retry értékekkel lehetne még szépen és rendeltetésszerűen megoldani, de ezeket a funkciókat még nem írták bele.
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
Hmmm, ezeket nem artana egy feature requesttel megtolni. Bar az eximmonolitikus es allitolag fujj :)
- A hozzászóláshoz be kell jelentkezni
Multkor ilyenre volt szuksegem, es node.js-ben csinaltam meg,
milliszekundumra lehet idoziteni.
var main = function(){
var min = config.recurrenceMin;
var max = config.recurrenceMax;
var interval = Math.floor(Math.random() * (max - min + 1)) + min;
checkLocalJobs()
.then(executeLocalJobs)
.then(getRemoteJobs) //which are already in remotequeue
.then(updateRemoteQueue)
.spread(processResponse)
.spread(addToRemoteQueue)
.catch(function(error) { // error handling});
setTimeout(function() { main(); }, interval); // recursiveness for the win!:)
};
setTimeout-rol bovebben: https://nodejs.org/docs/v0.6.1/api/timers.html
Ebben az a jo, hogy random idokozonkent (tol-ig, pl: 5-10sec) lefut, de ha sok melo gyult fel, mig aludt, akkor tobbet is lefuttat (sorkezeles, miegymas).
Egy ideje fut mar a kod (november) eles kornyezetben, teljesen jol muzsikal.
Parat kihagytam a sorbol, hogy atlathatobb legyen, de rengeteg melot aszinkron modon fel lehet fuzni igy. Ha egy melo van, akkor .then(),
ha tobb van (egy tombben levo melok), akkor .spread().
Az executeLocalJobs egyebkent egy shell szkriptet hiv meg, amirol progress-t jelenti remote szerverre (stdout streamet figyeli, es aszerint kuld egy-egy HTTP POST-ot).
---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
- A hozzászóláshoz be kell jelentkezni
de miert az at/cron-t akarod megeroszakolni, ahelyett, hogy irnal egy demont, ami elindul aztan az idok vegeig csinalja a dolgat?
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
nagyobb az adminisztratív költsége 0-ról megvalósítani valamit mint ráépíteni egy-egy meglévő framework-re. az at/cron-t én a feladat ütemezés frameworkjének tekintem. kétségtelen, hogy már nem túl modern, vannak hiányosságai, nem illeszkedik minden feladathoz. de minden kicsit speciálisabb job-hoz írjunk saját ütemező réteget, vagy csináljunk egy újabb/jobb schedulert, ami megfelel a kor technológiájának és amire rákapcsolhatjuk a mai szoftverek ütemezendő cuccait? én a 2. mellett vagyok.
amúgy az at másodpercesítése nem tarozik a modernizált scheduler íráshoz :-)
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
esetleg csinalhatnal egy sajat daemont, aminek atadod az osszes kimeno levelet (mint ahogy a clamav/spamassist/stb-nek atadjak: google://exim+outgoing+mail+filter ), ez ul a levelen 1 percig, majd megnezni hogy nincs-e ilyen fajl: var/run/pleaseundomymailvagyakarmi/12345ID, ha nincs akkor visszaadja a levelet az eximnek tovabbitasra.
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Ezzel csak az az egyetlen gond, hogy attol tetted fuggove a job elindulasat, hogy az adott idopillanatban sikerul-e vezerlest kapnia az idozito szerkezetednek. Ha valamiert szenne van terhelve a gep, es 15:00:00-15:00:02 kozott eppen nem kap vezerlest az atd, akkor a 15:00:01-kor elinditando processz nem fog elindulni sohasem. Hogy miert? Mert az ora a processzortol tobbe-kevesbe fuggetlenul ketyego dolog a szamitogepben, es a leolvasas kvazi barmikor kimaradhat, ha a proci epp nem er ra a te folyamatoddal foglalkozni. Nem veletlen, hogy a vilagon mindenki percre igazitottan idozit, vagy max 10-20 masodpercenkent futtat meg dolgokat. Az ennel pontosabb idoziteshez vagy demont, vagy valamilyen mas task-monitoring megoldast alkalmaznak, ahol nem idozitenek semmit, hanem maga a szofter varja ki a szukseges idot, es van benne egy jo adag hibatures is (ha a delta T nagyobbegyenlo mint, akkor vegrehajt, egyebkent wait).
Az, amit itt leirtal, az a nagyon csunya ganyolas kategoria, es production gepen ilyenert kezletores jar.
--
Blog | @hron84
Üzemeltető macik
- A hozzászóláshoz be kell jelentkezni
az óra a procitól függetlenül jár
- a téma egyik jó tételmondata.
nem, az `at' csak alsó határt néz. tehát ha "nagy a load" akkor is csak maximum késik a 15:01-es job.
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni