Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Python RQ: je n'arrête pas d'avoir des NoSuchJobError sur Heroku. Voici mon code et les logs d'erreur. Une idée ?

+5 votes
scheduler = django_rq.get_scheduler('default')

def reset():
    """Cancel all active jobs"""
    try:
        jobs = scheduler.get_jobs()
        for job in jobs:
            job.cancel()

    except NoSuchJobError:
        pass

def run():
    """Start task schedulers"""
    try:
        for feed in Feed.objects.all():
            scheduler.schedule(
                scheduled_time=datetime.now(),
                func=fetch_and_parse,
                args=[feed],
                interval=1,
                timeout=1800
            )
    except NoSuchJobError:
        reset()
        run()

def fetch_and_parse(feed):
    """Fetch and parse feed"""
    if feed.fetch():
        feed.parse()
    time.sleep(feed.interval-1)

def main():
    reset()
    run()

rqworker.1 | Traceback (most recent call last): 09:36:43 rqworker.1 | File "/app/.heroku/python/lib/python3.4/site-packages/rq/queue.py", line 371, in dequeue_any Exception
rqworker.1 | job = cls.job_class.fetch(job_id, connection=connection)
rqworker.1 | File "/app/.heroku/python/lib/python3.4/site-packages/rq/job.py", line 294, in fetch
rqworker.1 | job.refresh()
rqworker.1 | File "/app/.heroku/python/lib/python3.4/site-packages/rq/job.py", line 396, in refresh
rqworker.1 | raise NoSuchJobError('No such job: {0}'.format(key))
rqworker.1 | rq.exceptions.NoSuchJobError: No such job: b'rq:job:587e4fab-a718-4e75-ae27-bb47c8e73c21'
demandé 2-Aou-2015 par khamaileon (182 points)
edité 2-Aou-2015 par khamaileon

Ton log n'est peut être pas assez verbeux : on ne sait pas a quel endroit çà pète dans ton script.

Essais d'ajouter du log dans tes excepts.

Au pasage, le run() récursif dans le catch me parait un peu brutal ;)

def run():
    """Start task schedulers"""
    try:
        for feed in Feed.objects.all():
            ...
    except NoSuchJobError:
        reset()
        run() # this

Votre réponse

Preview

Votre nom à afficher ( en option ):
Vie privée: . Votre adresse de messagerie ne sera utilisée que pour l'envoi de ces notifications .
Vérification anti -spam:
Pour éviter cette vérification à l'avenir, Connectez vous ou inscrivez vous.
...