[PYTHON] N'hésitez pas à créer une file d'attente de tâches avec PyQS

Lors du contrôle de la file d'attente avec Python, Celery est une norme, mais [PyQS] utilise Amazon SQS (https://github.com/spulec/PyQS) J'ai trouvé ça, alors j'ai essayé de l'utiliser pendant un moment. J'ai eu du mal car le comportement est légèrement différent de README, mais je suis reconnaissant qu'il soit possible de créer une file d'attente de tâches très simple. ..

Installation

L'installation est facile et une commande pip est requise. pip install pyqs

Variable d'environnement

Les variables d'environnement suivantes sont requises.

--ʻAWS_ACCESS_KEY_ID ʻAWSS_SECRET_ACCESS_KEY ... Doit avoir l'autorisation de lecture / écriture sur Amazon SQS --PYTHONPATH ... Rend le script Python exécuté par Queue disponible pour référence.

tâche

Importez la tâche de décorateur de pyqs et placez-la sur la fonction que vous souhaitez enregistrer dans la file d'attente.

qqq/tasks.py


from pyqs import task


@task('queue0')
def another_task(message):
    print "another_task: message={}".format(message)


@task('queue0')
def send_email(subject):
    print "send_email: subject={}".format(subject)

Inscription à la file d'attente

add_queue.py


from qqq.tasks import another_task, send_email
from settings import config

for i in range(0, 100):
    send_email.delay(subject='hogehoge')
    another_task.delay(message='hogehogehoge')

Démarrer le travailleur

run_queue.sh


#! /bin/bash

export PYTHONPATH=`pwd`
export QUEUE='queue0'
pyqs $QUEUE

Selon le [README] de Github (https://github.com/spulec/PyQS/blob/master/README.rst), le nom de la file d'attente doit être "queue0.tasks.send_email" ou "queue.tasks.another_task" Cependant, le SQS réel n'autorise pas de point dans le nom de la file d'attente, donc queue0 déclarée dans le décorateur @task sera le nom de la file d'attente. J'ai chassé la source pendant environ 2 heures avant de comprendre cela.

Résumé

Il est intéressant de pouvoir créer immédiatement une file d'attente de tâches si vous avez accès à Amazon SQS sans avoir à configurer vous-même un courtier de messages. De plus, je suis reconnaissant que SQS soit presque gratuit.

Github

La source est ici

Recommended Posts

N'hésitez pas à créer une file d'attente de tâches avec PyQS
N'hésitez pas à crypter le disque
N'hésitez pas à implémenter le client http asynchrone de Python avec Trio + httpx
N'hésitez pas à frapper 100 sciences des données avec Google Colab et Azure Notebooks!
J'ai essayé de créer un pipeline ML avec Cloud Composer