这是另一个让我烦恼的人
以下代码在完成长时间运行的任务后作为管理命令运行
logger.debug('preparing email')
context = {
'project': task.project,
'site': Site.objects.get(pk=settings.SITE_ID),
'task': task,
'user': task.user,
}
subject = 'Custom Assay Design of #%s - "%s" has completed' % (
project.pk, project.title)
logger.debug('email step 1')
try:
content_txt = render_to_string(
'analysis/email/analysis_complete.txt', context)
except:
logger.debug('failed to render string')
import traceback
traceback.print_exc()
logger.debug('email step 2')
它没有开始那么多的调试或通用的尝试/除了它现在在哪里
如果我单步执行shell中的所有内容,它就能完美运行
如果我将content_txt AND content_html更改为字符串变量,那么事情就可以了
因为输出看起来像
2014-06-12 10:03:24,831 primer_search_finished line:28 DEBUG Callback made to process PrimerTask 237
2014-06-12 10:03:24,831 primer_search_finished line:30 DEBUG Trying to get task 237
2014-06-12 10:03:24,878 primer_search_finished line:54 DEBUG Task 237 for project 280:Test -- 2014-04-11 marked complete
2014-06-12 10:03:24,889 primer_search_finished line:60 DEBUG preparing email
2014-06-12 10:03:24,897 primer_search_finished line:71 DEBUG email step 1
每次尝试运行render_to_string时都会中断
python版本 - 2.7.5 django版本 - 1.5.6
任何想法?
答案 0 :(得分:0)
当您运行脚本与从命令行测试运行时,您的基本目录看起来不一样。
我建议:
...
try:
content_txt = render_to_string(
'%s/analysis/email/analysis_complete.txt' % PROJECT_ROOT, context)
....
这将确保您实际上正在查找文件的正确位置。
在此之前,您必须定义PROJECT_ROOT
。 (您可以查看使用相对于此文件的位置__file__
。)