2016-06-23 4 views
0

So habe ich um die Slack-API herumalbern und am Ende einen einfachen Slack-Bot, die auf einem freien Kanal postet, ob eine Website ist oder nicht (wenn mit der URL zur Verfügung gestellt)Port Binding scheitert für Skript nach 60 Sekunden bei der Bereitstellung auf Heroku

)

Jedes Mal, wenn ich es Heroku einsetzen, funktioniert es für die ersten 60 Sekunden und wirft dann einen Fehler wie diese in den Protokollen

2016-06-22T20:18:11.933928+00:00 heroku[web.1]: State changed from crashed to starting 
2016-06-22T20:18:15.635404+00:00 heroku[web.1]: Starting process with command `python margo/margo.py 5000` 
2016-06-22T20:18:18.724727+00:00 app[web.1]: StarterBot connected and running! 
2016-06-22T20:19:15.714485+00:00 heroku[web.1]: Stopping process with SIGKILL 
2016-06-22T20:19:15.714485+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 
2016-06-22T20:19:16.857081+00:00 heroku[web.1]: Process exited with status 137 
2016-06-22T20:19:16.874584+00:00 heroku[web.1]: State changed from starting to crashed 

Mein Procfile sieht so etwas wie dieses

web: python margo/margo.py 5000 

Ich suchte herum und found this und this sagen, dass die PORT am Profile angegeben werden sollte und ich es wie die oben in der Procfile geändert. Aber meine ist nur ein einfaches Python-Skript und keine vollständige Flask/Django App.

Irgendwelche Ideen Leute, wo liege ich falsch?

EDIT

ich lesen, dass die $PORT Umgebungsvariable von Heroku gesetzt. Also mein Procfile ist jetzt

web: python margo/margo.py $PORT 

Aber das Programm stürzt ab, wieder mit der gleichen Fehlermeldung, wenn

eingesetzt

Antwort

0

ich dieses Problem gelöst, indem Sie einen einfachen HTTP-Server auf dem Port ausgeführt von Heroku vorgesehen und machte es als eine Person Hintergrundprozess.

Nach den Änderungen, mein Procfile sieht wie folgt aus

web: (python -m http.server $PORT &) && (python margo/margo.py) 

Also, auch wenn der Web-Server nichts tat, es selbst in den Hafen binded und verhindert die Anwendung von weiteren Absturz.

+0

Anstatt das '&&' -Konstrukt, schlage ich eine separate Prozesslinie vor: 'worker: python margo/margo.py'. Sie können es dann explizit über 'heroku ps: start worker' verwalten. – bimsapi