мерзавец webhook терпит неудачу - вы знаете почему? - PullRequest
0 голосов
/ 28 апреля 2019

Справочная информация:

У меня есть хранилище битов репо с именем DOSTUFF, которое включает скрипт Python do_stuff.py.Я редактирую его, используя Eclipse pydev на моем локальном компьютере, и отправляю изменения в bitbucket через git push origin master.

Я клонировал DOSTUFF в пробную учетную запись pythonanywhere без каких-либовыдает.

Теперь, когда я редактирую do_stuff.py локально, а затем git commit -m 'foo' & git push origin master их в bitbucket, мне нужно вручную git pull изнутри pythonanywhere позже, чтобы увидеть изменения в pythonanywhere.Это неэффективно .

Цели:

Я хочу, чтобы мой локальный (Eclipse) коммит в bitbucket автоматически вытягивался в pythonany куда-то, когда он выталкивался из локальногов битбакет.Очевидно, webhooks - это путь.

Испытания:

Чтобы сделать это, я следовал this подсказка, указав webhook в bitbucket на pythonanywhere/user/me/webhook.py.К сожалению, эти инструкции являются минималистичными, поскольку в них отсутствует надлежащий импорт, и они не объясняют, почему необходима фляга (я не эксперт).

webhook.py выглядит следующим образом:

#!/usr/bin/python2.7
# -*- coding: utf-8 -*

import git
from flask import Flask, request

# Initiate flask instance
app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def webhook():
    if request.method == 'POST':
        repo = git.Repo('./DOSTUFF')
        origin = repo.remotes.origin
        repo.create_head('master',
    origin.refs.master).set_tracking_branch(origin.refs.master).checkout()
        origin.pull()
        return '', 200
    else:
        return '', 400

if __name__ == '__main__':
    app.run(port=5000,debug=True)

Теперь, когда я git push из Eclipse в bitbucket, коммит (ы) приходят в bitbucket, но код в pythonanywhere остается неизменным.Другими словами, webhook.py терпит неудачу.

Напротив, когда я запускаю webhook.py изнутри pythonanywhere (консоль bash), я получаю следующую ошибку:

 * Serving Flask app "__main__" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
Traceback (most recent call last):
  File "/home/ME/webhook.py", line 21, in <module>
    app.run(port=5000,debug=True)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 943, in run
    run_simple(host, port, self, **options)
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 795, in run_simple
    s.bind(get_sockaddr(hostname, port, address_family))
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 98] Address already in use

Вопросы:

В чем основная причина сбоя?

Как правильно настроить webhook, который необходим и достаточен для автоматического - git pull изменения в pythonany в любом месте после выталкивания из локальногов битбакет?

1 Ответ

2 голосов
/ 30 апреля 2019

Вы пытаетесь запустить сервер в консоли PythonAnywhere, который не будет работать, поскольку трафик не перенаправляется на серверы консоли. Используйте веб-приложение для создания сервера для прослушивания веб-хуков.

...