Supposons que j'inclus un Tâche de démarrage dans mon rôle d'azur - en cours d'exécution quelque chose comme plusieurs minutes. Que se passe-t-il si la tâche de démarrage fonctionne "trop longue". P>
Je teste actuellement sur Emulator Calculer et observer les éléments suivants. P>
J'ai un fichier de 450 mégaoctes .zip avec Info-Zip Unzip . La tâche de démarrage décompresse l'archive. Le déploiement commence et je regarde dans le gestionnaire de tâches. De nombreux processus de service commencent, puis unzip.exe est exécuté. Après environ deux minutes, tous ces processus s'arrêtent puis commencent à nouveau et déchargent à nouveau. P>
On dirait donc qu'un déploiement est autorisé à fonctionner pendant environ deux minutes, puis est réinitialisé avec force et démarré à nouveau. P>
est-ce le comportement attendu? Est-ce que ça persiste sur le véritable nuage? Y a-t-il des limites difficiles sur la durée d'un jeu de rôle? Comment puis-je aborder cette situation, sauf déplacer le déballage dans realentertrypoint.onstart () code>? P>
4 Réponses :
Il y a des battements de cœur que l'agent de tissu azur fera contre le rôle. Si ceux-ci ne sont pas reconnus (disent un processus de blocage à long terme), cela pourrait entraîner la signalisation du rôle comme indisponible. p>
Vous pouvez essayer de mettre votre processus de démarrage dans un fil d'arrière-plan qui fonctionne indépendamment. Cela devrait vous aider à garder le rôle de recyclé pendant que le processus démarre. Gardez simplement à l'esprit que vous devrez peut-être effectuer des ajustements si vous obtenez des demandes avant que le rôle ne démarre complètement. Il y a aussi une manière (que je ne peux pas sembler rappeler ATM) pour signaler le rôle et le sortir de l'équilibreur de charge temporaire pendant la fin de votre processus. P>
Cela devrait informer l'équilibreur de charge que votre processus est toujours occupé: p>
Comment puis-je appeler cette méthode de l'intérieur d'une tâche de démarrage?
Je ne pense pas que la méthode Setbusy s'applique aux tâches de démarrage. Vous utiliseriez SetBusy avec votre rôle si votre code de rôle de rôle (par exemple, la méthode d'exécution) faisait quelque chose de consommateur de temps et ne voulait pas que le contrôleur de tissu pense qu'il a été suspendu. Si vous utilisez TaskType = "Simple" Tâches de démarrage (le type qui fonctionne à l'achèvement avant que votre OnStart soit appelé), l'équilibreur de charge ne vous envoie pas encore au trafic. Et si vous utilisez l'une des autres tâches de démarrage (arrière-plan ou au premier plan), celles-ci fonctionnaient de toute façon de toute façon vos méthodes d'ONSTART et d'exécuter.
J'ai exécuté des tâches de démarrage qui courent pendant une période assez longue (réfléchir à 20-30 minutes) et le rôle est simplement dans un état «occupé». Je ne pense pas qu'il y ait une limite difficile pendant combien de temps le rôle restera dans cet état tant que la tâche de démarrage est toujours en cours d'exécution et n'a pas quitté avec un code de retour non nul (en fait, il s'agit d'un gotcha pour la plupart premiers créateurs de tâches de démarrage lorsqu'ils font une invite). Le FC est tout à fait fonctionne de manière technique, donc il n'y aurait donc aucune raison de «récupérer» le rôle (c'est-à-dire que les battements de cœur vont toujours). P>
L'émulateur DEV vient de notimer lorsque le rôle n'a pas commencé et vous avertit. Si vous cliquez sur l'option «Gardez l'attente», il continuera à exécuter la tâche de démarrage à l'achèvement. Le nuage ne fait pas cela bien sûr (vous avertir). P>
jamais essayé une tâche qui a été super longue, il pourrait donc y avoir une très longue limite. Il me semble que 3 heures était un nombre magique dans certains cas de délai d'attente, comme des recycles de rôle, mais je n'ai jamais essayé ... p>
J'ai eu la même question, alors essayé une expérience. J'ai exécuté une tâche de démarrage - TaskType = "simple" afin de bloquer les rôles du début à exécuter - et de le laisser courir pendant 50 heures. Le contrôleur de tissu ne s'est pas plaint et le portail n'a montré aucune erreur. Il a terminé sa longue boucle "Ne rien faire" après les 50 heures, alors cette tâche de démarrage est sortie et mon rôle Web a commencé bien. P>
Donc, mon test emperical indique que les tâches de démarrage peuvent prendre beaucoup de temps!