Certaines fonctions doivent s'exécuter de manière asynchrone sur le serveur Web. L'envoi de courriels est un exemple classique. Quelle est la meilleure façon (ou la plus pythonique) d'écrire une fonction décorateur pour exécuter une fonction de manière asynchrone?Multithreading pour Python Django
Ma configuration est une commune un: Python 2.4.7, Django 1.4, gunicorn 0.17.2
Par exemple, voici un début:
from threading import Thread
def postpone(function):
def decorator(*args, **kwargs):
t = Thread(target = function, args=args, kwargs=kwargs)
t.daemon = True
t.start()
return decorator
utilisation souhaitée:
@postpone
def foo():
pass #do stuff
Regardez ce poste trop http://stackoverflow.com/questions/573618/django -set-up-a-schedule-job. Pour une tâche planifiée, choisissez une solution basée sur cron. Tâche planifiée, les tâches asynchrones choisissent Céleri. Je commence par https://github.com/tivix/django-cron avant de migrer vers Celery récemment. –
Merci pour toutes les réponses à ce jour, mais le céleri nécessite un peu de frais généraux (installation de l'application, en créant un DB pour cela). Donc, alors que Céleri est une solution, il ne répond pas à ma question sur l'écriture d'un décorateur autonome pour multithread une fonction. – tomcounsell