Comment annuler un transfert en pycurl? J'utilise pour retourner -1 dans libcurl mais pycurl ne semble pas aimer cela ("pycurl.error: valeur de retour invalide pour écrire callback -1 17") retour 0 ne fonctionne pas non plus, j'obtiens "erreur: (23, 'corps d'écriture Échec ') ". Aussi comment faire un essai/excepté avec pycurl? Je ne vois aucun exemple en ligne ni les exemples de pycurl du sitepycurl annuler un transfert et essayer & sauf
Répondre
Exemple de code aiderait ici. À en juger par le message d'erreur, et en l'affichant dans le code source, vous avez configuré un callback en écriture. Ceci est configuré, je pense, par CURLOPT_WRITEFUNCTION et la documentation qui dit:
Return the number of bytes actually taken care of. If that amount differs from the amount passed to your function, it'll signal an error to the library and it will abort the transfer and return CURLE_WRITE_ERROR.
Le code wrapper pycurl vérifie que la valeur est comprise entre 0 et le nombre qui lui est passé. C'est pourquoi -1 a échoué, et pourquoi 0, déclenche CURLE_WRITE_ERROR, déclenche l'exception "corps d'écriture ayant échoué". Le code pycurl est:
/* run callback */
arglist = Py_BuildValue("(s#)", ptr, total_size);
if (arglist == NULL)
goto verbose_error;
result = PyEval_CallObject(cb, arglist);
Py_DECREF(arglist);
if (result == NULL)
goto verbose_error;
/* handle result */
if (result == Py_None) {
ret = total_size; /* None means success */
}
else if (PyInt_Check(result)) {
long obj_size = PyInt_AsLong(result);
if (obj_size < 0 || obj_size > total_size) {
PyErr_Format(ErrorObject, "invalid return value for write callback %ld %ld", (long)obj_size, (long)total_size);
goto verbose_error;
}
ret = (size_t) obj_size; /* success */
}
else if (PyLong_Check(result)) {
... identical code for Long ...
}
else {
PyErr_SetString(ErrorObject, "write callback must return int or None");
goto verbose_error;
}
Je ne vois aucune façon pycurl pour cette fonction pour soutenir une autre valeur de retour. Il pourrait y avoir d'autres moyens, comme la mise en place d'un rappel de progression, qui semble permettre les interruptions.
Le code correspondant à boucle est lui-même:
/* If the previous block of data ended with CR and this block of data is
just a NL, then the length might be zero */
if(len) {
wrote = data->set.fwrite_func(ptr, 1, len, data->set.out);
}
else {
wrote = len;
}
if(CURL_WRITEFUNC_PAUSE == wrote)
return pausewrite(data, type, ptr, len);
if(wrote != len) {
failf(data, "Failed writing body (%d != %d)", (int)wrote, (int)len);
return CURLE_WRITE_ERROR;
}
afin que vous puissiez voir que pycurl ne supporte pas le retour CURL_WRITEFUNC_PAUSE qui déferlent lui-même permet. Vous pouvez également voir que curl n'a aucun moyen de prendre en charge les interruptions grâce à la fonction de rappel d'écriture. Vous devrez utiliser autre chose.
- 1. Comment installer pyCurl?
- 2. pycurl: l'option RETURNTRANSFER n'existe pas
- 3. transfert hôte et client
- 4. Process.Start() Et essayer de lancer un jeu
- 5. Annuler un POST dans Oracle
- 6. Comment annuler et redémarrer correctement un processus BackgroundWorker?
- 7. C#: essayer un projet simple
- 8. Comment annuler un événement routé?
- 9. LINQ Sauf opérateur et objet égalité
- 10. Jquery plugin étoiles et annuler bouton note
- 11. VBA comment vérifier l'environnement LAN et Annuler la vérification
- 12. Comment annuler le mode Veille et Hibernation?
- 13. Essayer de lancer et PagePrécédente d'accès valeurs
- 14. Transfert de fichiers sur un réseau
- 15. BASH copier tous les fichiers sauf un
- 16. transfert d'octets d'un ByteBuffer à un autre
- 17. Comment effectuer un transfert groupé sur s3?
- 18. Annuler la fonctionnalité dans un href
- 19. Annuler form.submit()
- 20. Essayer de montrer un DIV Dans jQuery
- 21. Comment annuler un WinForms TreeView ExpandAll?
- 22. comment annuler un appel de service WCF?
- 23. Valider un Postscript sans essayer de l'imprimer?
- 24. essayez ... sauf ... sauf ...: comment éviter de répéter le code
- 25. Hudson annuler ne pas annuler tous les processus
- 26. Désactivation de tous les contrôles enfants sauf un dans une fenêtre WPF
- 27. C#: Comment annuler l'appel RasDial?
- 28. Transfert d'objet via Pyro
- 29. annuler ou annuler l'appel ajax dans ie 6,7,8
- 30. Groovy "sauf" la syntaxe?