-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 John Hampton skrev 26-06-2008 23:17: | Robert C Corsaro wrote: |> We are also thinking about implementing some sort of calendar in trac. |> It would need to send reminders. I think it's best to have a daemon |> running, like cron or something similar, or maybe even a custom job, and |> building a Trac plugin to that gives it a web UI. It should be |> extensible so ppl can implement all sorts of crazy things like closing |> tickets after no activity for x days. Even if it could just schedule an |> http callback with some sort of UID to remember what the task was. I |> don't like the polling idea either. | | Having some sort of trac-management daemon running that would load the | environments and then expose interfaces for plugins to use in order to | run scheduled jobs, etc. would be fair solution. Let us know if you | come up with something.
This is exactly why I meant "something" should be included in core. Polling from cron works for stuff down to resolution of about 15 minutes or so -- for eg sending an im 5 minutes before a meeting it's not suitable IMNHO. I agree that using a system facility where available is a good idea in general, I just don't think current os scheduler deamons are suitable for what trac needs. Since everyone seemed to read my comments to mean exactly the opposite of what I wanted to say -- to clarify: ~ 1) Trac needs a way to run batch commands (eg extend trac-admin as mentioned) ~ 2) There should be an api for plugins to react to "time" events, probably some ~ kind of hook/callback/event-interface ~ a) this is easily implementable as a script that polls trac -- given 1) but ~ using cron/windows "at" is not a very *good* solution ~ b) a better approach would be a dedicated job que of some kind -- ~ but it would be more complex -- which is why I'd suggest having it not ~ run as part of trac/tracd, but rather as a separate long running python ~ daemon (the timer part -- the job *que* should be integrated) ~ Note that the two solutions to the problem might use the same interface The main difference I see between a) and b) is that b) would allow a tighter integration between the registered callbacks/events/jobque than a) would. Rather than "every 15 minutes or so" a plugin could simply register an event along the lines of: ~ calendar(at=date, call=func with_params=(), recurring=0/everyMHDW) Maybe a separate call for recurring events and single events would be cleaner (experience from cron/at on unix systems seems to suggest that). Note also that a solution to 1) would (as Noah mentioned) solve *many* of the scheduling-problems, because it we already have cron/at commands available that will help you do much as soon as you have a usable batch-interface. I'm not sure if trac-admin would be better than building a soild (xml)rpc api for trac -- "trac-rpc url command params..." seems quite reasonable to me as a batch interface. The problem with return/errorcodes/errohandling for long-running tasks does need some consideration. RPC is never trivial to get right. Then again, any batch-job that takes a "long" time (5 minutes? 20 minutes?) to finish, would be a bit fragile to script/schedule to run often. Maybe a trac-rpc client could internally do: ~ call_rpc(xxx) ~ while True: ~ poll_rpc_response() ~ #Sleep... how long? ~ #Break after ... how long? ~ #Continue reporting error/status etc However as far as I can see 2) would still be very useful (or I see many useful areas for plugins where something like this should be available) -- and if we do implement 2) it should also be usable for doing more general administrative jobs. The main reason I'd see a scheduling daemon as a separate sub-system is exactly to avoid the typical problems of eg coldfusion, where you have a half-baked internal poll-based hack to run webscripts on a timer, and need something completely different to accomplish solid maintenance scripting of your system... And the main reason to have an internal system/interface at all is to have better resolution and integration between the scheduler/calendar and trac. The goal shouldn't be to try to replace cron -- rather to augment trac by making it aware of the passage of time, so to speak, and by presenting a more powerful set of features/hooks to trac plugins. Best regards, - -- ~ .---. Eirik Schwenke <[EMAIL PROTECTED]> ( NSD ) Harald HÃ¥rfagresgate 29 Rom 150 ~ '---' N-5007 Bergen tlf: (555) 889 13 ~ GPG-key at pgp.mit.edu Id 0x8AA3392C -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIaI14xUW7FIqjOSwRAvKDAJ9XNTiekEXGHUnjicJsFUg6mHB19gCeNre3 z/8w8hBizXQCZV/xiRGe82A= =CePA -----END PGP SIGNATURE----- --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Trac Development" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/trac-dev?hl=en -~----------~----~----~----~------~----~------~--~---
