1

次のcronジョブがあります:

0 0 * * * source /home/admin/data/virtualenvs/myapp/bin/activate && python /home/admin/data/virtualenvs/myapp/project/manage.py 1c-import >> /home/admin/data/logs/1c-import.log 2>&1

そのため、ログ ファイルに次のエラーが表示されます。

Traceback (most recent call last):
  File "/home/admin/data/virtualenvs/myapp/project/manage.py", line 28, in <module>
    execute_from_command_line(sys.argv)
  File "/home/admin/data/virtualenvs/myapp/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/home/admin/data/virtualenvs/myapp/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/admin/data/virtualenvs/myapp/local/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/admin/data/virtualenvs/myapp/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "/home/admin/data/virtualenvs/myapp/project/helper/management/commands/1c-import.py", line 94, in handle
    print 'Product [%s] with price %s and qty %s' % (product_title, product_price, product_qty)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 34-35: ordinal not in range(128)

しかし、このコマンドを手動で実行しようとすると、問題ありません。このエラーの原因は何だと思いますか?

4

2 に答える 2

1

私の推測では、cron ジョブから実行すると、システムは製品のタイトル、価格、数量を ASCII に変換しようとしますが、手動で実行すると別のエンコーディングが選択されます。1 つまたは複数の商品のタイトル、価格、数量に、ASCII にエンコードできない文字が含まれています。

次のように情報を出力すると役に立ちますか?:

ENCODING = "utf-8"
print 'Product [%s] with price %s and qty %s' % (product_title.encode(ENCODING), 
                      product_price.encode(ENCODING), product_qty.encode(ENCODING))
于 2013-05-16T10:25:37.060 に答える