Hi. Sure it can. I've done this for my own web applications. The way you want to do it is either construct another thread (probably by the means of a function launched in config/environment.py load_environment()) and then proceed with most of the tasks you want to schedule, or like I did it myself, write script detached from the web application (i.e. make_app function launched by Paster entry point) and then utilize process to launch your script as a daemon. Writing separate script running as a daemon won't impact performance of the web app itself in case if you are up to some resource intensive tasks (which I assume you do).
> Writing separate script running as a > daemon won't impact performance of the web app itself in case if you are > up to some resource intensive tasks (which I assume you do).
In this source code, do you think daemon can impact performance of the web app ? It's is a bad idea to start scheduler in my webapp ?
Is there an issue with Global Internal Lock of Python ?
from apscheduler.scheduler import Scheduler import requests
sched = Scheduler()
@sched.interval_schedule(seconds=10) def some_job(): print('start') for a in range(1, 10): r = requests.get('http://www.google.fr') print(r.status_code)
print('fin')
sched.configure() sched.start()
from wsgiref.util import setup_testing_defaults from wsgiref.simple_server import make_server
I can't answer your question specifically (someone else may have to do that), but I will say this: cron is the natural "scheduler" on a system and if you're doing anything that's supposed to be in the background or "scheduled" it's nice to put it on cron. Easier to find for other programmers, universal scheduling system, etc…
Additionally, you could use Celery to do work. Schedule a start script as a cronjob and put whatever kind of job you want work to be done for into Celery.
That's how I do it at least.
On Jun 16, 2012, at 3:52 AM, Stéphane Klein wrote:
> The way you > Writing separate script running as a > daemon won't impact performance of the web app itself in case if you are > up to some resource intensive tasks (which I assume you do).
> In this source code, do you think daemon can impact performance of the web app ?
> It's is a bad idea to start scheduler in my webapp ?
> Is there an issue with Global Internal Lock of Python ?
> from apscheduler.scheduler import Scheduler
> import requests
> sched = Scheduler()
> @sched.interval_schedule(seconds=10)
> def some_job():
> print('start')
> for a in range(1, 10):
> r = requests.get('http://www.google.fr')
> print(r.status_code)
> print('fin')
> sched.configure()
> sched.start()
> from wsgiref.util import setup_testing_defaults
> from wsgiref.simple_server import make_server
> status = '200 OK'
> headers = [('Content-type', 'text/plain')]
> start_response(status, headers)
> ret = ["%s: %s\n" % (key, value)
> for key, value in environ.iteritems()]
> return ret
> httpd = make_server('', 8000, simple_app)
> print "Serving on port 8000..."
> httpd.serve_forever()
> -- > You received this message because you are subscribed to the Google Groups "pylons-discuss" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/pylons-discuss/-/tU8Te4-cm5EJ.
> To post to this group, send email to pylons-discuss@googlegroups.com.
> To unsubscribe from this group, send email to pylons-discuss+unsubscribe@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/pylons-discuss?hl=en.
APScheduler is great. I like my applications to be self-contained and system independent. So, personally I avoid cron jobs. For a simple single-process webapp it's fine to start out with a scheduler thread. When your application gets more complex you could run APScheduler in a separately managed process such as, if you are using uwsgi, a uwsgi mule.
Your example code will probably spend most of its time waiting for I/O, not holding the GIL.
On Saturday, June 16, 2012 4:52:37 AM UTC-4, Stéphane Klein wrote:
> The way you
>> Writing separate script running as a >> daemon won't impact performance of the web app itself in case if you are >> up to some resource intensive tasks (which I assume you do).
> In this source code, do you think daemon can impact performance of the web > app ?
> It's is a bad idea to start scheduler in my webapp ?
> Is there an issue with Global Internal Lock of Python ?
> from apscheduler.scheduler import Scheduler
> import requests
> sched = Scheduler()
> @sched.interval_schedule(seconds=10)
> def some_job():
> print('start')
> for a in range(1, 10):
> r = requests.get('http://www.google.fr')
> print(r.status_code)
> print('fin')
> sched.configure()
> sched.start()
> from wsgiref.util import setup_testing_defaults
> from wsgiref.simple_server import make_server