Skip to content

web app block #534

@GodsDusk

Description

@GodsDusk

Describe the bug

I use the Openai package in the Flask program, but the app sometimes blocks, and nothing output in console.

After KeyboardInterrupt:

    return super().create(*args, **kwargs)
  File "/data/python_group/py38/lib/python3.8/site-packages/openai/api_resources/abstract/engine_api_resource.py", line 153, in create
    response, _, api_key = requestor.request(
  File "/data/python_group/py38/lib/python3.8/site-packages/openai/api_requestor.py", line 288, in request
    result = self.request_raw(
  File "/data/python_group/py38/lib/python3.8/site-packages/openai/api_requestor.py", line 596, in request_raw
    result = _thread_context.session.request(
  File "/data/python_group/py38/lib/python3.8/site-packages/requests/sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
  File "/data/python_group/py38/lib/python3.8/site-packages/requests/sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
  File "/data/python_group/py38/lib/python3.8/site-packages/requests/adapters.py", line 489, in send
    resp = conn.urlopen(
  File "/data/python_group/py38/lib/python3.8/site-packages/urllib3/connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "/data/python_group/py38/lib/python3.8/site-packages/urllib3/connectionpool.py", line 449, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/data/python_group/py38/lib/python3.8/site-packages/urllib3/connectionpool.py", line 444, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/local/python3/lib/python3.8/http/client.py", line 1322, in getresponse
    response.begin()
  File "/usr/local/python3/lib/python3.8/http/client.py", line 303, in begin
    version, status, reason = self._read_status()
  File "/usr/local/python3/lib/python3.8/http/client.py", line 264, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/local/python3/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
  File "/usr/local/python3/lib/python3.8/ssl.py", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/local/python3/lib/python3.8/ssl.py", line 1099, in read
    return self._sslobj.read(len, buffer)
KeyboardInterrupt

To Reproduce

here is my flask code:

# -*- coding:utf-8 _*-

import logging
import time
from logging import handlers

import tiktoken
from flask import Flask, render_template, request, jsonify
import openai
from gevent.pywsgi import WSGIServer

# Setup logging
logger = logging.getLogger('MainProgram')
logger.setLevel(10)
logHandler = handlers.RotatingFileHandler('flask.log', maxBytes=10000000, backupCount=10)
logger.addHandler(logHandler)
logger.info(f'{time.strftime("%Y-%m-%d %H:%M:%S")} Logging configuration done')
app = Flask(__name__)
openai.api_key = ''
openai.api_base = ''
openai.api_type = 'azure'
openai.api_version = ''
deployment_name = ''
encoding = tiktoken.get_encoding("cl100k_base")
max_len = 8192

@app.route('/')
def index():
    return render_template('home.html')


@app.route('/chat', methods=['POST'])
def handle_message():
    data = request.get_json()
    message = data['message']
    messages = [{'role': 'system',
                 'content': f'You are ChatGPT, a large language model trained by OpenAI.\nKnowledge cutoff: 2021-09\n'
                            f'Current date:  {time.strftime("%Y-%m-%d", time.localtime())}'},
                *message]
    input_len = sum(len(encoding.encode(msg['content'])) for msg in messages)
    if max_len - input_len < 0:
        raise Exception('input too long')
    response = openai.ChatCompletion.create(
        engine=deployment_name,
        # model="gpt-3.5-turbo",
        messages=messages,
        temperature=1,
        max_tokens=max_len - input_len
    )

    result = ''
    for choice in response.choices:
        result += choice.message.content
    return jsonify({'result': result})


if __name__ == '__main__':
    http_server = WSGIServer(('0.0.0.0', 8095), app, log=logger)
    http_server.serve_forever()

Code snippets

No response

OS

centos and windows10

Python version

pythonv3.8.0

Library version

0.27.8

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions