前提・実現したいこと
pythonを使用してチャットbotを作成しています。
天気予報を取得して回答する機能を実装したところ、ローカルサーバーではうまく動作するのですが、pythonanywhere上では以下のエラーログが出ます。
発生している問題・エラーメッセージ
2019-07-28 13:39:03,057: Internal Server Error: /talking/
Traceback (most recent call last):
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/site-packages/django/views/generic/base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "/home/elis1107/elis/talk/views.py", line 27, in post
response = elis.dialogue(value)
File "/home/elis1107/elis/talk/elis.py", line 32, in dialogue
self.dictionary.study(input, parts)
File "/home/elis1107/elis/talk/dictionary.py", line 69, in study
self.study_pattern(input, parts)
File "/home/elis1107/elis/talk/dictionary.py", line 81, in study_pattern
m = re.search(ptn_item.pattern, word)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/re.py", line 183, in search
return _compile(pattern, flags).search(string)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/re.py", line 286, in _compile
p = sre_compile.compile(pattern, flags)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/sre_compile.py", line 764, in compile
p = sre_parse.parse(p, flags)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/sre_parse.py", line 930, in parse
p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/sre_parse.py", line 426, in _parse_sub
not nested and not items))
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/sre_parse.py", line 651, in _parse
source.tell() - here + len(this))
re.error: nothing to repeat at position 0
該当のソースコード
python
1from django.views.generic import TemplateView 2from django.shortcuts import render 3from django.http.response import HttpResponse 4from elis.forms import TalkForm 5from talk.elis import Elis 6from talk.weather import WeatherResponder 7import json 8import random 9import datetime 10import re 11 12class ElisView(TemplateView): 13 def __init__(self): 14 self.params = { 15 'title':'エリスちゃんとおしゃべり', 16 'message': '', 17 'form': TalkForm(), 18 'emotion': 0 19 } 20 21 def get(self, request): 22 return render(request, 'elis/index.html', self.params) 23 24 def post(self, request): 25 elis = Elis('elis') 26 value = request.POST.get('speak',False) 27 response = elis.dialogue(value) 28 log = [] 29 place = re.sub('の天気予報教えて','', value) 30 weather = WeatherResponder() 31 w_response = weather.is_weather(place) 32 33 34 def writeLog(str): 35 log.append('>' + value + '\n') 36 log.append('>エリス:' + response + '\n') 37 with open('talk/dics/log.txt', 'a', encoding='utf_8') as f: 38 f.writelines(log) 39 40 if '天気予報教えて' in request.POST.get('speak'): 41 self.params['message'] = 'エリス:' + w_response 42 return HttpResponse(json.dumps(self.params['message']),content_type='application/json; charset=UTF-8',status=None) 43 44 45 if request.POST.get('speak') == '': 46 self.params['message'] = 'エリス:用があるなら何か言って' 47 return HttpResponse(json.dumps(self.params['message']),content_type='application/json; charset=UTF-8',status=None) 48 elif request.POST.get('speak') == '今何時?': 49 whattime = random.randint(0,1) 50 dt_now = datetime.datetime.now() 51 52 if whattime == 0: 53 self.params['message'] = 'エリス:そうねだいたいね' 54 else: 55 self.params['message'] = 'エリス:今は' + str(dt_now.hour) + '時' + str(dt_now.minute) + '分だよ' 56 57 return HttpResponse(json.dumps(self.params['message']),content_type='application/json; charset=UTF-8',status=None) 58 else: 59 self.params['message'] = 'エリス:' + response 60 writeLog(str) 61 elis.save() 62 #study_random(str) 63 return HttpResponse(json.dumps(self.params['message']),content_type='application/json; charset=UTF-8',status=None)
試したこと
reを使っているので*が混同されてるのかと考えて、ワイルドカードでimportしていたのをやめてみましたが解決しませんでした。
一度pythonanywhere上の該当ファイルを削除してローカルで実行していたファイルをアップロードしてもみましたがだめでした。
どうすればよいのか教えていただければ幸いです。
補足情報(FW/ツールのバージョンなど)
python3.7.1
django2.1.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。