我在谷歌应用引擎中运行一个 python 2.7 应用程序。我有一个非常基本的函数,它向任务队列发送一个帖子,然后它发布到一个函数,该函数基于解析为邮件模板的一些变量构造和发送电子邮件。
我不确定任务队列是否卡在我的应用程序的旧版本或问题是什么,但是当我更新发送电子邮件的文件中的代码并上传更改时,这些更改不会导致任何电子邮件应用程序发送的文本。就像它使用了错误的旧版本文件一样。
这个问题的原因可能是什么?
编辑
请注意,这是我到目前为止所尝试的。
我尝试将应用程序更新到新版本,但没有任何变化
我尝试编辑项目中的其他文件,它们似乎都正确更新
我正在使用 oauth 方法上传 .bat 文件来运行命令,并且那里不需要刷新,因为更新应用程序版本没有帮助
我尝试将我想使用的电子邮件代码从其旧类中移出到一个新类中,将 main.py url 更改为指向新类,它仍然使用旧的电子邮件文本
我尝试删除用于触发电子邮件的旧 url并使用全新的 url,它仍然使用旧的电子邮件文本
我尝试使用 version-number.project-id.appspot.com 格式测试应用程序,它仍然使用旧的电子邮件文本,该版本中的任何地方都不存在
所以重申一下,我正在尝试使用我的应用程序发送一封电子邮件,即使旧消息被完全删除,电子邮件代码被移动到一个新文件和一个新的应用程序版本,我仍然以某种方式发送旧电子邮件文本。
编辑 2
这是队列任务的相关代码:
taskqueue.add(url="/emailnotify", countdown = 1,
params = {"email":tPaypalEmail, "gold":tGoldAmount,
"name":tCustomerName, 'key':tOrderKey} )
这是应该发送电子邮件的类中的相关代码:
from cStringIO import StringIO
import webapp2
from models.order import Order
from google.appengine.api import mail
from google.appengine.ext import db, webapp
from _stringmethods import StringMethods
from _numbertogp import NumberToGp
class EmailNotify(webapp2.RequestHandler):
def post(self):
tPaypalEmail = self.request.get('email')
tCustomerName = self.request.get('name')
tGoldAmount = self.request.get('gold')
tOrderKey = self.request.get('key')
tOrder = Order()
tOrder = Order.get(tOrderKey)
tVerificationCode = tOrder.orderVerificationCode
tGoldInt = int(tGoldAmount)
tGoldAmount = NumberToGp.ConvertIntToBet(tGoldInt)
tVerificationFile = cStringIO.StringIO()
tVerificationFile.write(str(tVerificationCode))
#new message which does not appear in the app emails
tMessage = """Long string formatted message""" % (str(tCustomerName), str(tGoldAmount), str(tVerificationCode))
logging.debug(str(tMessage)) #this does not appear in the logs
message = mail.EmailMessage()
message.sender = "Smokin Mils Goldshop <Smokin.Mils.Goldshop@gmail.com>" #this email user is added as an app owner
message.to = tPaypalEmail
message.subject = "SmokinShop Order Details"
message.body = tMessage
message.attachments = [('verification-code.txt', tVerificationFile.getvalue())]
message.send()
编辑 3
针对我发布此问题的reddit问题,这里是queue.yaml
queue:
- name: default
rate: 60/s
bucket_size: 50
retry_parameters:
min_backoff_seconds: 2
max_backoff_seconds: 200
task_retry_limit: 10