2016-08-05 61 views
1

Unten ist meine Flaschenprojektstruktur. Ich habe Probleme mit Nltk auf Heroku, so basierend auf einige Dokumentation, ich NLTK Datenordner in meinem Projekt enthalten und fügte alle Dateien in Git und schob es zu Heroku. Für das nächste Mal, wenn ich nur app.py Datei ändern und nur app.py schieben möchte, dann tat ich, wie ich in den folgenden Befehlen gezeigt. Aber jedes Mal, wenn ich Änderungen vornehme und nur eine Datei zu git hinzufüge, dauert es Commit und Push für immer.Problem mit dem Schieben nur einer Akte zu Heroku

C:\Users\mysys\mywebservices>dir 
Volume in drive C is OSDisk 
Volume Serial Number is B08D-8A75 

Directory of C:\Users\mysys\mywebservices 

08/04/2016 02:18 PM <DIR>   . 
08/04/2016 02:18 PM <DIR>   .. 
08/05/2016 10:40 AM    18 .gitignore 
08/05/2016 12:07 PM    1,546 app.py 
08/03/2016 06:52 PM    369 instructions.txt 
08/03/2016 06:42 PM <DIR>   mywebservices 
08/04/2016 02:30 PM <DIR>   nltk_data 
08/03/2016 06:38 PM    21 Procfile 
08/04/2016 02:33 PM    135 requirements.txt 
       5 File(s)   2,089 bytes 
       4 Dir(s) 12,047,900,672 bytes free 

Im Folgenden werden die Befehle verwendet. Eine große Anzahl von Dateien wird für eine geringfügige Änderung in app.py verschoben. Verpasse ich etwas, lass es mich wissen.

C:\Users\mysys\mywebservices>git status 
On branch master 
Your branch is ahead of 'origin/master' by 19 commits. 
    (use "git push" to publish your local commits) 
Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

     modified: app.py 

no changes added to commit (use "git add" and/or "git commit -a") 

C:\Users\mysys\mywebservices>git add app.py 

C:\Users\mysys\mywebservices>git commit -m "testing nltk" 
[master 5990375] testing nltk 
Committer: mysys <[email protected]> 
Your name and email address were configured automatically based 
on your mysys and hostname. Please check that they are accurate. 
You can suppress this message by setting them explicitly: 

    git config --global user.name "Your Name" 
    git config --global user.email [email protected] 

After doing this, you may fix the identity used for this commit with: 

    git commit --amend --reset-author 

1 file changed, 1 insertion(+), 1 deletion(-) 

C:\Users\mysys\mywebservices> 

C:\Users\mysys\mywebservices>git push heroku master 
Counting objects: 23025, done. 
Delta compression using up to 4 threads. 
Compressing objects: 82% (18925/22974) 
+0

Sie keine einzige begehen drängen, drängen Sie 19 Commits: 'Ihr Zweig ist vor‚origin/master‘um 19 commits.' – 1615903

+0

@ 1.615.903 aber was ist der Weg nur eine Datei zu aktualisieren, kann ich eine Pull-Anfrage von Heroku an local machen und Änderungen vornehmen und nochmal drücken? – yome

Antwort

0

zu Heroku Pushing dauert in der Regel eine anständige Menge an Zeit, denn jedes Mal, wenn Sie zu Heroku drücken:

  • Sie zuerst Upload alle Projektcode Heroku. Wenn Sie viele Änderungen vorgenommen haben (in diesem Fall zeigen Ihre Protokolle, dass Sie 19 Commits durchführen), könnten Sie eine große Datenmenge an Heroku übertragen.
  • Als nächstes scannt Heroku Ihr Projekt und führt ihre Buildpack-Skripte aus.
  • Heroku versucht dann, alle Projektabhängigkeiten zu installieren (auch wenn sich nichts geändert hat). Dies kann eine Weile dauern, abhängig davon, wie viele Abhängigkeiten Ihr Projekt hat.
  • Heroku erstellt dann ein "Pseudo" -Bild aus Ihrem vollständig erstellten Projekt.
  • Heroku nimmt dann dieses Pseudo-Image und setzt es in so viele Dynos um, die Sie laufen haben.
  • Heroku entfernt dann Ihre alten Dynos und ersetzt sie mit den neuen Dynos, nachdem Sie auf ein festgelegtes Timeout gewartet haben.
+0

thx für die Erklärung. Ich habe nltk_data Ordner, der rund 3GB ist. Ich habe dies einmal auf Heroku hochgeladen und das wird sich nie wieder ändern. Jedes Mal, wenn ich Änderungen an anderen Dateien vornahm, wurde das gesamte Projekt erneut hochgeladen. Das macht meinen Entwickler sehr langsam. – yome

+0

Jedes Mal, wenn du zu Heroku drückst, musst du schrittweise Änderungen an deinem Build vornehmen. Wenn Sie große Änderungen vornehmen, die zu großen binären Unterschieden führen, müssen Sie eine große Datenmenge an Heroku senden. Es gibt wirklich nichts, was Sie dagegen tun können, außer eine schnellere Netzwerkverbindung zu erhalten, weniger große Änderungen durchzuführen oder häufiger zu pushen. – rdegges