【发布时间】:2020-06-19 21:26:11
【问题描述】:
我在一个 Heroku 服务器上设置了一个聊天机器人,该服务器在 gunicorn 框架上运行 Python 3.8 中的 Flask。除了一个全局变量外,一切都运行良好。以下是我与此问题相关的代码;我在 python 方面不是很有经验,所以这可能是我忽略的一个简单错误。
import os
import sys
import json
from flask import Flask, request
import requests
from random import randint
import datetime
...
@app.route('/spam', endpoint = 'spam', methods=['POST'])
def webhook():
log('The Talker Log: Received a ping to the /spam endpoint.')
global spam_message_count
spam_message_count += 1
if spam_message_count == 1:
post_message('The Talker', 'SPAM HAS BEEN ACTIVATED. Message #1', '')
else:
post_message('The Talker', 'SPAM Message #{}'.format(spam_message_count), '')
return "ok", 200
(其他方法未显示)此代码没有任何价值,实际上只是以后的测试。
为此设置包括一台单独的机器,该机器使用 cron 每分钟 ping /spam 端点。设置完成后,我会收到来自聊天机器人的以下消息:
SPAM HAS BEEN ACTIVATED. Message #1
一分钟后
SPAM HAS BEEN ACTIVATED. Message #1
一分钟后
SPAM Message #2
一分钟后
SPAM Message #3
一分钟后
SPAM Message #4
一分钟后
SPAM Message #5
一分钟后
SPAM Message #2
一分钟后
SPAM Message #3
一分钟后
SPAM Message #4
一分钟后
SPAM Message #6
让它运行了大约四十分钟后,它只在 #22 结束。我真的不确定变量在哪里被绊倒,任何帮助将不胜感激。
【问题讨论】:
-
也许你应该把它保存在文件或数据库中。这个变量可以在一个线程中是全局的,但服务器可能使用许多线程/进程,然后其他进程有自己的变量
spam_message_count
标签: python flask heroku gunicorn chatbot