3
votes

Exemple CRON pour Strapi

Salut, je me demandais si quelqu'un avait des exemples d'utilisation des fonctions Cron Schedule sur Strapi: https://strapi.io/documentation/3.xx/configurations/configurations.html#functions comme envoyer des e-mails, accéder à la configuration de strapi, etc.


1 commentaires

L'exemple de la documentation ne suffit pas? Qu'essayez-vous de faire exactement?


3 Réponses :


10
votes
'*/1 * * * *': async() => {
    console.log("I am running " + new Date(), Object.keys(strapi.config));
    await strapi.services.article.publish();
  }
In your-project/config/functions/cron.js. you can add as many functions in the above format. 
The function name in itself is a cron expression which is parsed by strapi to execute at frequent intervals. There are many online tools that will tell you the cron expression that you want to create.The above function runs every 1 minute, by which I am publishing a content type by using strapi.services. i.e. in file your-project/api/article/services/Article.js
I have written a service layer method that at the moment is publishing an article.Similarly, you can send an email from your email content type or any utility file that you have made to trigger an email.
For accessing strapi config use: strapi.config object instead of strapi.services

0 commentaires

4
votes

Strapi 3 a les tâches cron désactivées par défaut. Assurez-vous de les activer d'abord :)

Vous n'avez pas non plus besoin de faire * / 1 pour chaque minute dans une tâche cron, juste *, car * signifie chaque, et il ne vérifie qu'une fois par minute.

 les tâches cron doivent être activées


2 commentaires

Je pense que cela n'est plus disponible via l'interface utilisateur et que vous devez le faire via server.json


Nous devons faire dans server.js: cron: {enabled: true}



1
votes

Mon exigence était de récupérer les données d'une base de données MSSQL externe (données de base) hébergée sous RDS (AWS) et de mettre à jour le catalogue du produit strapi (mongodb) toutes les minutes.

J'ai créé un dossier "cron" personnalisé sous "root" pour garder tous mes modules personnalisés afin de garder un "cron.js" propre.

Sous "cron.js" j'ai importé simplement mon module personnalisé pour appeler le module externe:

const fwSync = require('../../cron/dataSync');

 Importez votre module personnalisé, par exemple 'dataSync' où se trouve toute votre logique métier. Remarque: j'ai réussi 'strapi' à mon module depuis cron.

Sur mon module personnalisé, j'utilise sequelize pour me connecter à MSSQL. Une fois les données récupérées, je peux utiliser strapi. requête directement.


0 commentaires