Strona 1 z 1

gunicorn + flask + brak danych w return

: 05 stycznia 2022, 23:18
autor: LordRuthwen
Czołgiem.
Albo mam jakieś zaćmienie albo co... :)
prosta wydawało by się sytuacja, aplikacja we flasku na gunicornie:

Kod: Zaznacz cały

@app.route("/test")
def test():
  response = make_response(str(main.test("blablabla")), 200)
  response.mimetype = "text/plain"
  return response
Funkcja do jakiej się odwołuje:

Kod: Zaznacz cały

def test(testlist):
  with open(testfile, 'r') as f:
    count = f.read()
  result = print("test_stats{indexes_alias=\""+testlist+"\"} "+count)
  return result
W pliku testfile jest tylko jeden wyraz, konkretniej jakaś liczba.
Na wyjściu chcę otrzymać to co jest w result.
Natomiast dostaję tyle:

Kod: Zaznacz cały

$ curl -v 0:8000/test
* About to connect() to 0 port 8000 (#0)
*   Trying 0.0.0.0...
* Connected to 0 (0.0.0.0) port 8000 (#0)
> GET /test HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 0:8000
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: gunicorn
< Date: Wed, 05 Jan 2022 22:15:41 GMT
< Connection: close
< Content-Type: text/plain; charset=utf-8
< Content-Length: 4
< 
* Closing connection 0
None
Zapewne robię gdzieś podręcznikowy błąd, ale nie mam pojęcia gdzie, bo go nie widzę :)
Przeglądając logi journalctl widzę natomiast logi gunicorna z poprawną odpowiedzią, taką jaką chcę zobaczyć.

Gdy z app.route wywalę str() to mam takie cuś:

Kod: Zaznacz cały

TypeError: The view function for 'test' did not return a valid response. The function either returned None or ended without a return statement.

Re: gunicorn + flask + brak danych w return

: 06 stycznia 2022, 00:06
autor: fnmirk
Nie wiem gdzie robisz błąd, ale sprawdź wersję Pythona i jego powiązania. Może składnia poleceń, których użyłeś jest ze starych rozwiązań (python2), a system odwołuje się do pythona3. I wymaga to może zmiany składni.

Coś w pobliżu:
https://devbugfix.com/p/1148292
https://www.golinuxcloud.com/flask-gunicorn-nginx/